|
@@ -1,24 +1,35 @@
|
|
package com.qs.mp.web.controller.api.admin;
|
|
package com.qs.mp.web.controller.api.admin;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.qs.mp.admin.domain.CdKey;
|
|
import com.qs.mp.admin.domain.CdKeyGroup;
|
|
import com.qs.mp.admin.domain.CdKeyGroup;
|
|
|
|
+import com.qs.mp.admin.domain.CdKeyGroupGoods;
|
|
|
|
+import com.qs.mp.admin.domain.excel.CdKeyOrderExcel;
|
|
|
|
+import com.qs.mp.admin.domain.param.CdKeyActivateParam;
|
|
import com.qs.mp.admin.domain.param.CdKeyCreateParam;
|
|
import com.qs.mp.admin.domain.param.CdKeyCreateParam;
|
|
import com.qs.mp.admin.domain.param.CdKeyQueryParam;
|
|
import com.qs.mp.admin.domain.param.CdKeyQueryParam;
|
|
|
|
+import com.qs.mp.admin.domain.vo.CdKeyExchangeVO;
|
|
import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
|
|
import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
|
|
|
|
+import com.qs.mp.admin.domain.vo.CdKeyGroupVO;
|
|
|
|
+import com.qs.mp.admin.service.ICdKeyGroupGoodsService;
|
|
import com.qs.mp.admin.service.ICdKeyGroupService;
|
|
import com.qs.mp.admin.service.ICdKeyGroupService;
|
|
|
|
+import com.qs.mp.admin.service.ICdKeyService;
|
|
import com.qs.mp.common.core.domain.AjaxResult;
|
|
import com.qs.mp.common.core.domain.AjaxResult;
|
|
import com.qs.mp.common.core.page.TableDataInfo;
|
|
import com.qs.mp.common.core.page.TableDataInfo;
|
|
|
|
+import com.qs.mp.common.enums.CdKeyGroupStatusEnum;
|
|
|
|
+import com.qs.mp.common.enums.CdKeyStatusEnum;
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
|
|
+import com.qs.mp.utils.ExcelUtil;
|
|
import com.qs.mp.web.controller.BaseController;
|
|
import com.qs.mp.web.controller.BaseController;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
|
|
+import ma.glasnost.orika.MapperFacade;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
-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;
|
|
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
|
@@ -33,7 +44,16 @@ public class CdKeyMgrController extends BaseController {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- ICdKeyGroupService cdKeyGroupService;
|
|
|
|
|
|
+ private ICdKeyGroupService cdKeyGroupService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ICdKeyGroupGoodsService cdKeyGroupGoodsService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ICdKeyService cdKeyService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MapperFacade mapperFacade;
|
|
|
|
|
|
|
|
|
|
@ApiOperation("兑换码生成")
|
|
@ApiOperation("兑换码生成")
|
|
@@ -57,15 +77,15 @@ public class CdKeyMgrController extends BaseController {
|
|
|
|
|
|
QueryWrapper<CdKeyGroup> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<CdKeyGroup> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
|
- if (Objects.nonNull(param.getCreateTimeStart())&&Objects.nonNull(param.getCreateTimeEnd())) {
|
|
|
|
|
|
+ if (Objects.nonNull(param.getCreateTimeStart()) && Objects.nonNull(param.getCreateTimeEnd())) {
|
|
queryWrapper.between("created_time", param.getCreateTimeStart(), param.getCreateTimeEnd());
|
|
queryWrapper.between("created_time", param.getCreateTimeStart(), param.getCreateTimeEnd());
|
|
}
|
|
}
|
|
|
|
|
|
- if (Objects.nonNull(param.getActiveTimeStart())&&Objects.nonNull(param.getActiveTimeEnd())) {
|
|
|
|
|
|
+ if (Objects.nonNull(param.getActiveTimeStart()) && Objects.nonNull(param.getActiveTimeEnd())) {
|
|
queryWrapper.between("activation_time", param.getActiveTimeStart(), param.getActiveTimeEnd());
|
|
queryWrapper.between("activation_time", param.getActiveTimeStart(), param.getActiveTimeEnd());
|
|
}
|
|
}
|
|
|
|
|
|
- if (Objects.nonNull(param.getMinCdKeyNum())&&Objects.nonNull(param.getMaxCdKeyNum())) {
|
|
|
|
|
|
+ if (Objects.nonNull(param.getMinCdKeyNum()) && Objects.nonNull(param.getMaxCdKeyNum())) {
|
|
queryWrapper.between("quantity", param.getMinCdKeyNum(), param.getMaxCdKeyNum());
|
|
queryWrapper.between("quantity", param.getMinCdKeyNum(), param.getMaxCdKeyNum());
|
|
}
|
|
}
|
|
|
|
|
|
@@ -84,4 +104,81 @@ public class CdKeyMgrController extends BaseController {
|
|
List<CdKeyGroup> list = cdKeyGroupService.list(queryWrapper);
|
|
List<CdKeyGroup> list = cdKeyGroupService.list(queryWrapper);
|
|
return getDataTable(list);
|
|
return getDataTable(list);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @ApiOperation("兑换码详情")
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:cdKey:query')")
|
|
|
|
+ @PostMapping("/detail/{groupId}")
|
|
|
|
+ @ApiResponses(
|
|
|
|
+ @ApiResponse(code = 200, message = "查询成功", response = CdKeyGroupVO.class)
|
|
|
|
+ )
|
|
|
|
+ public AjaxResult detail(@PathVariable String groupId) {
|
|
|
|
+ CdKeyGroupVO cdKeyGroupVO = new CdKeyGroupVO();
|
|
|
|
+ CdKeyGroup cdKeyGroup = cdKeyGroupService.getById(groupId);
|
|
|
|
+ mapperFacade.map(cdKeyGroup, CdKeyGroupVO.class);
|
|
|
|
+ List<CdKeyGroupGoods> goodsList = cdKeyGroupGoodsService.list(new QueryWrapper<CdKeyGroupGoods>().eq("group_id", groupId));
|
|
|
|
+ cdKeyGroupVO.setGoodsList(goodsList);
|
|
|
|
+ return AjaxResult.success(cdKeyGroupVO);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @ApiOperation("激活兑换码")
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:cdKey:activate')")
|
|
|
|
+ @PostMapping("/activate")
|
|
|
|
+ public AjaxResult activate(@RequestBody CdKeyActivateParam param) {
|
|
|
|
+ CdKeyGroup cdKeyGroup = cdKeyGroupService.getById(param.getGroupId());
|
|
|
|
+ if (!CdKeyGroupStatusEnum.NONACTIVATED.getValue().equals(cdKeyGroup.getStatus())) {
|
|
|
|
+ return AjaxResult.error("只有未激活的兑换码组才能激活");
|
|
|
|
+ }
|
|
|
|
+ cdKeyGroup.setStatus(param.getStatus());
|
|
|
|
+ return AjaxResult.success(cdKeyGroupService.updateById(cdKeyGroup));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @ApiOperation("查看兑换码兑换详情")
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:cdKey:query')")
|
|
|
|
+ @PostMapping("/exchangeDetail/{groupId}")
|
|
|
|
+ @ApiResponses(
|
|
|
|
+ @ApiResponse(code = 200, message = "查询成功", response = CdKeyExchangeVO.class)
|
|
|
|
+ )
|
|
|
|
+ public TableDataInfo exchangeDetail(@PathVariable String groupId) {
|
|
|
|
+ CdKeyExchangeVO exchangeVO = new CdKeyExchangeVO();
|
|
|
|
+ startPage();
|
|
|
|
+ List<CdKey> cdKeyList = cdKeyService.list(new QueryWrapper<CdKey>().eq("group_id", groupId));
|
|
|
|
+ long unCashedCount = cdKeyList.stream().filter(cdKey -> CdKeyStatusEnum.UNCASHED.getValue().equals(cdKey.getStatus())).count();
|
|
|
|
+ long cashedCount = cdKeyList.stream().filter(cdKey -> CdKeyStatusEnum.CASHED.getValue().equals(cdKey.getStatus())).count();
|
|
|
|
+ exchangeVO.setRemainQty((int) unCashedCount);
|
|
|
|
+ exchangeVO.setCashedQty((int) cashedCount);
|
|
|
|
+ List<CdKey> list = (List<CdKey>) getDataTable(cdKeyList).getRows();
|
|
|
|
+ exchangeVO.setCdKeyExchangeList(list);
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @ApiOperation("导出兑换码订单")
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:cdKey:export')")
|
|
|
|
+ @PostMapping("/export")
|
|
|
|
+ public AjaxResult export(@RequestBody CdKeyQueryParam param) {
|
|
|
|
+ Date activeTimeStart = param.getActiveTimeStart();
|
|
|
|
+ Date activeTimeEnd = param.getActiveTimeEnd();
|
|
|
|
+ if (activeTimeStart == null || activeTimeEnd == null) {
|
|
|
|
+ return AjaxResult.error("导出订单必须设置激活时间范围");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<CdKeyGroupListVO> list = cdKeyService.listCdKeyVO(new QueryWrapper<CdKeyGroup>()
|
|
|
|
+ .between("t2.activation_time", activeTimeStart, activeTimeEnd)
|
|
|
|
+ .between(null != param.getMinCdKeyNum() && null != param.getMaxCdKeyNum(), "t2.quantity", param.getMinCdKeyNum(), param.getMaxCdKeyNum())
|
|
|
|
+ .eq(null != param.getChannelId(), "t2.channel_id", param.getChannelId())
|
|
|
|
+ .eq(null != param.getStatus(), "t2.status", param.getStatus())
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ List<CdKeyOrderExcel> excelList = new ArrayList<>();
|
|
|
|
+ list.forEach(cdKeyGroupVO -> {
|
|
|
|
+ CdKeyOrderExcel cdKeyOrderExcel = new CdKeyOrderExcel();
|
|
|
|
+ cdKeyOrderExcel.setSiteName(cdKeyGroupVO.getSiteName());
|
|
|
|
+ cdKeyOrderExcel.setCdKey(cdKeyGroupVO.getCdKey());
|
|
|
|
+ cdKeyOrderExcel.setGoodsName(cdKeyGroupVO.getTitle());
|
|
|
|
+ cdKeyOrderExcel.setPicUrl(cdKeyGroupVO.getPicUrl());
|
|
|
|
+ excelList.add(cdKeyOrderExcel);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ ExcelUtil<CdKeyOrderExcel> excelUtil = new ExcelUtil<>(CdKeyOrderExcel.class);
|
|
|
|
+ return excelUtil.exportExcel(excelList, "兑换码订单导出", false);
|
|
|
|
+ }
|
|
}
|
|
}
|