소스 검색

新增推广码导出接口;
新增推广码校验手机号;

codingliang 7 달 전
부모
커밋
3b8fe243a5

+ 16 - 3
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -17,6 +17,7 @@ import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.member.query.SpecialFavorStudentQuery;
+import com.sqx.modules.member.query.VipPromoCodeQuery;
 import com.sqx.modules.member.query.VipPromoRecordQuery;
 import com.sqx.modules.order.dao.AppOrderDao;
 import com.sqx.modules.order.dto.OrderQueryDto;
@@ -327,15 +328,27 @@ public class ExportExeclController {
         return Result.success("特殊照顾学生列表导出成功");
     }
 
+    @GetMapping("exportVipPromoCode")
+    @ApiOperation("导出会员推广码记录列表")
+    public Result exportVipPromoCode(VipPromoCodeQuery queryDTO) {
+        Long userId = ShiroUtils.getUserId();
+        ExportJob exportJob = buildExportJob("会员码广码记录列表.xlsx","vipPromoCode", userId.toString(),
+                queryDTO.buildQueryConditionString(),
+                JSONUtil.toJsonStr(queryDTO));
+        exportJobService.save(exportJob);
+
+        return Result.success("会员码广码记录列表导出成功");
+    }
+
     @GetMapping("exportVipPromoRecord")
-    @ApiOperation("导出会员推广记录列表")
+    @ApiOperation("导出会员充值记录列表")
     public Result exportVipPromoRecord(VipPromoRecordQuery queryDTO) {
         Long userId = ShiroUtils.getUserId();
-        ExportJob exportJob = buildExportJob("会员推广记录列表.xlsx","vipPromoRecord", userId.toString(),
+        ExportJob exportJob = buildExportJob("会员充值记录列表.xlsx","vipPromoRecord", userId.toString(),
                 queryDTO.buildQueryConditionString(),
                 JSONUtil.toJsonStr(queryDTO));
         exportJobService.save(exportJob);
 
-        return Result.success("会员推广记录列表导出成功");
+        return Result.success("会员充值记录列表导出成功");
     }
 }

+ 25 - 0
src/main/java/com/sqx/modules/member/query/VipPromoCodeQuery.java

@@ -1,5 +1,6 @@
 package com.sqx.modules.member.query;
 
+import cn.hutool.core.util.StrUtil;
 import com.sqx.common.query.PageQuery;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -22,4 +23,28 @@ public class VipPromoCodeQuery extends PageQuery {
 
     @ApiModelProperty(value = "推广人手机号码")
     private String phone;
+
+    public String buildQueryConditionString() {
+        StringBuilder sb = new StringBuilder();
+
+        // 会员用户名
+        if (StrUtil.isNotBlank(userName)) {
+            sb.append("会员用户名:").append(userName).append(", ");
+        }
+
+        // 推广码
+        if (StrUtil.isNotBlank(promoCode)) {
+            sb.append("推广码:").append(promoCode).append(", ");
+        }
+
+        // 推广人手机号码
+        if (StrUtil.isNotBlank(phone)) {
+            sb.append("推广人手机号码:").append(phone).append(", ");
+        }
+
+        sb.append("页码:").append(getPage()).append(", ");
+        sb.append("每页条数:").append(getLimit());
+
+        return sb.toString();
+    }
 }

+ 10 - 2
src/main/java/com/sqx/modules/member/service/impl/VipPromoCodeServiceImpl.java

@@ -9,11 +9,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.exception.SqxException;
 import com.sqx.common.utils.PageUtils;
+import com.sqx.modules.app.service.UserService;
 import com.sqx.modules.member.dao.VipPromoCodeDao;
 import com.sqx.modules.member.dto.VipPromoCodeDTO;
 import com.sqx.modules.member.entity.VipPromoCode;
 import com.sqx.modules.member.query.VipPromoCodeQuery;
 import com.sqx.modules.member.service.VipPromoCodeService;
+import com.sqx.modules.member.vo.VipPromoCodeVO;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -25,6 +27,8 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class VipPromoCodeServiceImpl extends ServiceImpl<VipPromoCodeDao, VipPromoCode> implements VipPromoCodeService {
 
+    private final UserService userService;
+
     @Override
     public PageUtils pages(VipPromoCodeQuery query) {
         IPage<VipPromoCode> page = baseMapper.selectPage(
@@ -36,8 +40,8 @@ public class VipPromoCodeServiceImpl extends ServiceImpl<VipPromoCodeDao, VipPro
                         .orderByDesc(VipPromoCode::getCreateTime)
         );
 
-        List<VipPromoCode> vos = page.getRecords().stream().map(e -> {
-            VipPromoCode vo = new VipPromoCode();
+        List<VipPromoCodeVO> vos = page.getRecords().stream().map(e -> {
+            VipPromoCodeVO vo = new VipPromoCodeVO();
             BeanUtil.copyProperties(e, vo);
             return vo;
         }).collect(Collectors.toList());
@@ -85,5 +89,9 @@ public class VipPromoCodeServiceImpl extends ServiceImpl<VipPromoCodeDao, VipPro
         if (baseMapper.selectCount(wrapper) > 0) {
             throw new SqxException("推广码已存在");
         }
+
+        if (ObjectUtil.isNull(userService.queryByPhone(dto.getPhone()))) {
+            throw new SqxException("手机号码不存在,请确认!");
+        }
     }
 }

+ 6 - 7
src/main/java/com/sqx/modules/member/vo/VipPromoCodeVO.java

@@ -1,11 +1,12 @@
 package com.sqx.modules.member.vo;
 
-import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
 * 会员推广码
@@ -18,26 +19,24 @@ public class VipPromoCodeVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "id")
-    @ExcelProperty("id")
     private Long id;
 
     @ApiModelProperty(value = "推广人名称")
-    @ExcelProperty("推广人名称")
     private String userName;
 
     @ApiModelProperty(value = "推广码")
-    @ExcelProperty("推广码")
     private String promoCode;
 
     @ApiModelProperty(value = "推广人身份证号码")
-    @ExcelProperty("推广人身份证号码")
     private String idCard;
 
     @ApiModelProperty(value = "推广人手机号码")
-    @ExcelProperty("推广人手机号码")
     private String phone;
 
     @ApiModelProperty(value = "推广人次")
-    @ExcelProperty("推广人次")
     private Integer promoCount;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
 }

+ 33 - 2
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -20,10 +20,13 @@ import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.member.query.SpecialFavorStudentQuery;
+import com.sqx.modules.member.query.VipPromoCodeQuery;
 import com.sqx.modules.member.query.VipPromoRecordQuery;
 import com.sqx.modules.member.service.SpecialFavorStudentService;
+import com.sqx.modules.member.service.VipPromoCodeService;
 import com.sqx.modules.member.service.VipPromoRecordService;
 import com.sqx.modules.member.vo.SpecialFavorStudentVO;
+import com.sqx.modules.member.vo.VipPromoCodeVO;
 import com.sqx.modules.member.vo.VipPromoRecordVO;
 import com.sqx.modules.order.dto.OrderQueryDto;
 import com.sqx.modules.order.service.AppOrderService;
@@ -54,6 +57,7 @@ import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -88,10 +92,10 @@ public class ExportScheduler {
     private final InsideAddressService insideAddressService;
     private final SpecialFavorStudentService specialFavorStudentService;
     private final VipPromoRecordService vipPromoRecordService;
+    private final VipPromoCodeService vipPromoCodeService;
 
     DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-
     /**
      * 将所有超过失效时间的优惠券改为失效状态
      * 每分钟运行一次
@@ -161,7 +165,9 @@ public class ExportScheduler {
                         excelData = getSpecialFavorStudentExcelData(exportJob);
                     }else if("vipPromoRecord".equals(fileType)){
                         excelData = getVipPromoRecordExcelData(exportJob);
-                    }else{
+                    } else if ("vipPromoCode".equals(fileType)){
+                        excelData = getVipPromoCodeExcelData(exportJob);
+                    } else{
                         continue;
                     }
                     String value=commonInfoService.findOne(430).getValue();
@@ -205,6 +211,31 @@ public class ExportScheduler {
         }
     }
 
+    private ExcelData getVipPromoCodeExcelData(ExportJob exportJob) {
+        VipPromoCodeQuery query = JSONUtil.toBean(exportJob.getConditions(), VipPromoCodeQuery.class);
+
+        ExcelData excelData = new ExcelData();
+        excelData.setName("会员推广码列表");
+        excelData.setTitles(Arrays.asList("推广人名称", "推广码", "推广人身份证号码", "推广人手机号码", "推广人次", "创建时间"));
+
+        PageUtils page = vipPromoCodeService.pages(query);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<List<Object>> rows = page.getList().stream().map(e -> {
+            VipPromoCodeVO vo = (VipPromoCodeVO) e;
+            List<Object> row = new ArrayList<>();
+            row.add(vo.getUserName());
+            row.add(vo.getPromoCode());
+            row.add(vo.getIdCard());
+            row.add(vo.getPhone());
+            row.add(vo.getPromoCount());
+            row.add(ObjectUtils.isNull(vo.getCreateTime()) ? "" : sdf.format(vo.getCreateTime()));
+            return row;
+        }).collect(Collectors.toList());
+
+        excelData.setRows(rows);
+        return excelData;
+    }
+
     private ExcelData getVipPromoRecordExcelData(ExportJob exportJob) {
         VipPromoRecordQuery query = JSONUtil.toBean(exportJob.getConditions(), VipPromoRecordQuery.class);