无关风月
2026-02-28 cfe18e338f08aa200a3bae6b4a25599e4f96ae86
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -5,6 +5,8 @@
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.xiaopeng.api.model.account.SysUser;
@@ -26,6 +28,7 @@
import com.xiaopeng.operation.service.IXpWhitelistService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -37,6 +40,7 @@
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
@@ -56,7 +60,7 @@
@RestController
@Api(tags = "邀请码管理")
@Slf4j
@RequestMapping("/api/v1/invitation")
@RequestMapping("")
public class XpInvitationCodeController {
    @Resource
    private IXpInvitationCodeService xpInvitationCodeService;
@@ -64,7 +68,7 @@
    private IXpWhitelistService xpWhitelistService;
    @ApiOperation(value = "邀请码管理分页列表",response = XpInvitationCode.class)
    @PostMapping("/pageList")
    @PostMapping("/api/v1/invitation/pageList")
    public R<PageInfo<XpInvitationCode>> pageList(@RequestBody InvitationPageListQuery query) {
        PageInfo<XpInvitationCode> pageList = xpInvitationCodeService.pageList(query);
        return R.ok(pageList);
@@ -72,7 +76,7 @@
    /**
     * 生成邀请码
     */
    @PutMapping("/add")
    @PutMapping("/api/v1/invitation/add")
    @ResponseBody
    @ApiOperation(value = "生成邀请码")
    @ApiImplicitParams({
@@ -85,7 +89,7 @@
    /**
     * 解绑
     */
    @PutMapping("/unbind")
    @PutMapping("/api/v1/invitation/unbind")
    @ResponseBody
    @ApiOperation(value = "解绑")
    @ApiImplicitParams({
@@ -99,8 +103,8 @@
        xpInvitationCodeService.update(xpInvitationCodeUpdateWrapper);
        return R.ok();
    }
    @ApiOperation(value = "点位导入模板下载")
    @GetMapping("/import-template")
    @ApiOperation(value = "邀请码导入模板下载")
    @GetMapping("/api/v1/invitation/import-template")
    public void importTemplate() {
        List<InvitationCodeImportExcel> invitationCodeImportExcels = new ArrayList<>();
        InvitationCodeImportExcel invitationCodeImportExcel = new InvitationCodeImportExcel();
@@ -108,14 +112,17 @@
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), InvitationCodeImportExcel.class, invitationCodeImportExcels);
        HttpServletResponse response = WebUtils.response();
        ServletOutputStream outputStream = null;
        //1.获取excel模板
        ClassPathResource classPathResource = new ClassPathResource("template/邀请码导入模板.xlsx");
        TemplateExportParams params = new TemplateExportParams(classPathResource.getPath());
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        try {
            String fileName = URLEncoder.encode("邀请码导入模板.xls", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            String fileName = URLEncoder.encode("邀请码导入模板.xlsx", "utf-8");
            response.setHeader("Content-dispodition", "attachment;filename=" + fileName);
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("邀请码导入模板下载失败!");
@@ -127,15 +134,15 @@
            }
        }
    }
    @Log(title = "邀请码导入", businessType = BusinessType.IMPORT)
    @ApiOperation(value = "邀请码导入")
    @PostMapping("/importExcel")
    @PostMapping("/base/v1/invitation/importExcel")
    public R<String> importExcel(@RequestPart("file") MultipartFile file) {
        System.out.println("文件名 = " + file.getOriginalFilename());
        System.out.println("文件大小 = " + file.getSize());
        System.out.println("ContentType = " + file.getContentType());
        ImportParams params = new ImportParams();
//        params.setTitleRows(1); // 标题行数
        params.setHeadRows(1); //表头行数
        InputStream inputStream = null;
//        List<CustomerImportFailedData> failedData = new ArrayList<>();
        List<InvitationCodeImportExcel> invitationCodeImportExcels;
        try {
            inputStream = file.getInputStream();
@@ -204,7 +211,7 @@
        return R.ok();
    }
    @ApiOperation(value = "邀请码导出")
    @PostMapping(value = "/exportExcel")
    @PostMapping(value = "/api/v1/invitation/exportExcel")
    public void exportExcel(@RequestBody InvitationPageListQuery query) {
        List<XpInvitationCode> list = xpInvitationCodeService.exportList(query);
        List<XpInvitationCodeExportExcel> xpWhitelistExportExcels = new ArrayList<>();
@@ -245,7 +252,7 @@
    /**
     * 批量删除
     */
    @GetMapping("/deleteByIds")
    @GetMapping("/api/v1/invitation/deleteByIds")
    @ResponseBody
    @ApiOperation(value = "批量删除")
    public R deleteByIds(String ids){