package com.ruoyi.web.controller.api;
|
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.hutool.json.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.basic.PageInfo;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.WebUtils;
|
import com.ruoyi.framework.web.service.TokenService;
|
import com.ruoyi.system.export.BigGiftPackageImport;
|
import com.ruoyi.system.model.TBigGiftPackage;
|
import com.ruoyi.system.query.BigGiftPackageQuery;
|
import com.ruoyi.system.service.TBigGiftPackageService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 大礼包 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-12-08
|
*/
|
@RestController
|
@RequestMapping("/t-big-gift-package")
|
@Api(tags = "(嘉视达)大礼包")
|
public class TBigGiftPackageController {
|
|
private final TBigGiftPackageService tBigGiftPackageService;
|
private final TokenService tokenService;
|
|
public TBigGiftPackageController(TBigGiftPackageService tBigGiftPackageService, TokenService tokenService) {
|
this.tBigGiftPackageService = tBigGiftPackageService;
|
this.tokenService = tokenService;
|
}
|
|
@ApiOperation(value = "大礼包分页列表")
|
@PostMapping(value = "/pageList")
|
public R<Page<TBigGiftPackage>> pageList(@RequestBody BigGiftPackageQuery query) {
|
Page<TBigGiftPackage> tBigGiftPackagePage = new Page<>(query.getPageNum(), query.getPageSize());
|
LambdaQueryWrapper<TBigGiftPackage> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TBigGiftPackage::getStatus,0);
|
wrapper.like(Objects.nonNull(query.getName()), TBigGiftPackage::getName, query.getName());
|
wrapper.orderByDesc(TBigGiftPackage::getCreateTime);
|
|
Page<TBigGiftPackage> pageInfo = tBigGiftPackageService.page(tBigGiftPackagePage, wrapper);
|
return R.ok(pageInfo);
|
}
|
|
@ApiOperation(value = "大礼包详情")
|
@GetMapping(value = "/detail/{id}")
|
public R<TBigGiftPackage> detail(@PathVariable Integer id ) {
|
TBigGiftPackage tBigGiftPackage = tBigGiftPackageService.getById(id);
|
return R.ok(tBigGiftPackage);
|
}
|
|
|
@ApiOperation(value = "大礼包添加")
|
@PostMapping(value = "/add")
|
@Log(title = "大礼包-添加", businessType = BusinessType.INSERT)
|
public R<String> add(@RequestBody TBigGiftPackage tBigGiftPackage) {
|
|
LoginUser loginUser = tokenService.getLoginUser();
|
tBigGiftPackage.setCreateUserId(loginUser.getUserId());
|
boolean save = tBigGiftPackageService.save(tBigGiftPackage);
|
if (save) {
|
return R.ok("添加成功");
|
}
|
return R.fail("添加失败");
|
}
|
|
@ApiOperation(value = "大礼包修改")
|
@PostMapping(value = "/update")
|
@Log(title = "大礼包-修改", businessType = BusinessType.UPDATE)
|
public R<String> update(@RequestBody TBigGiftPackage tBigGiftPackage) {
|
|
LoginUser loginUser = tokenService.getLoginUser();
|
tBigGiftPackage.setUpdateUserId(loginUser.getUserId());
|
boolean update = tBigGiftPackageService.updateById(tBigGiftPackage);
|
if (update) {
|
return R.ok("修改成功");
|
}
|
return R.fail("修改失败");
|
}
|
|
@ApiOperation(value = "大礼包删除")
|
@DeleteMapping(value = "/delete/{id}")
|
@Log(title = "大礼包-删除", businessType = BusinessType.DELETE)
|
public R<String> delete(@PathVariable Integer id ) {
|
TBigGiftPackage bigGiftPackage = tBigGiftPackageService.getById(id);
|
bigGiftPackage.setStatus(0);
|
bigGiftPackage.setUpdateUserId(tokenService.getLoginUser().getUserId());
|
boolean remove = tBigGiftPackageService.updateById(bigGiftPackage);
|
if (remove) {
|
return R.ok("删除成功");
|
}
|
return R.fail("删除失败");
|
}
|
|
|
@ApiOperation(value = "大礼包导入模板下载")
|
@GetMapping("/import-template")
|
public void importTemplate() {
|
List<BigGiftPackageImport> bigGiftPackageImports = new ArrayList<>();
|
BigGiftPackageImport bigGiftPackageImport = new BigGiftPackageImport();
|
bigGiftPackageImports.add(bigGiftPackageImport);
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), BigGiftPackageImport.class, bigGiftPackageImports);
|
HttpServletResponse response = WebUtils.response();
|
ServletOutputStream outputStream = null;
|
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");
|
outputStream = response.getOutputStream();
|
workbook.write(outputStream);
|
} catch (IOException e) {
|
e.printStackTrace();
|
System.out.println("大礼包商品导入模板下载失败!");
|
} finally {
|
try {
|
outputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
@Log(title = "大礼包商品-导入", businessType = BusinessType.IMPORT)
|
@ApiOperation(value = "大礼包商品-导入")
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
@PostMapping("/import")
|
public R<String> importInfo(@RequestPart("file") MultipartFile file) {
|
List<BigGiftPackageImport> bigGiftPackageImports = new ArrayList<>();
|
ImportParams params = new ImportParams();
|
params.setHeadRows(1); //表头行数
|
InputStream inputStream = null;
|
List<TBigGiftPackage> bigGiftPackages = new ArrayList<>();
|
try {
|
inputStream = file.getInputStream();
|
bigGiftPackageImports = ExcelImportUtil.importExcel(inputStream,
|
BigGiftPackageImport.class, params);
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new ServiceException("大礼包商品导入失败!");
|
} finally {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
throw new ServiceException(e.getMessage());
|
}
|
}
|
if (CollectionUtils.isEmpty(bigGiftPackageImports)) {
|
throw new ServiceException("大礼包商品数据为空!");
|
}
|
JSONObject result = new JSONObject();
|
int i = 1;
|
for (BigGiftPackageImport bigGiftPackageImport : bigGiftPackageImports) {
|
if (!StringUtils.hasLength(bigGiftPackageImport.getCode())){
|
result.append("第"+i+"行:[", "商品ID"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getName())){
|
result.append("第"+i+"行:[", "商品名称"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getTotalPrice())){
|
result.append("第"+i+"行:[", "商品总价"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getDeposit())){
|
result.append("第"+i+"行:[", "定金"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getPointsSettlementPrice())){
|
result.append("第"+i+"行:[", "积分结算价格"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getIntroduction())){
|
result.append("第"+i+"行:[", "商品简介"+"]不能为空");
|
continue;
|
}
|
if (!StringUtils.hasLength(bigGiftPackageImport.getInventory())){
|
result.append("第"+i+"行:[", "库存"+"]不能为空");
|
continue;
|
}
|
TBigGiftPackage bigGiftPackage = new TBigGiftPackage();
|
bigGiftPackage.setCode(bigGiftPackageImport.getCode());
|
bigGiftPackage.setName(bigGiftPackageImport.getName());
|
bigGiftPackage.setIntroduction(bigGiftPackageImport.getIntroduction());
|
try {
|
BigDecimal totalPrice = new BigDecimal(bigGiftPackageImport.getTotalPrice());
|
bigGiftPackage.setTotalPrice(totalPrice);
|
} catch (Exception e) {
|
result.append("第"+i+"行:[", "商品总价"+"]格式错误");
|
continue;
|
}
|
|
try {
|
BigDecimal deposit = new BigDecimal(bigGiftPackageImport.getDeposit());
|
bigGiftPackage.setDeposit(deposit);
|
} catch (Exception e) {
|
result.append("第"+i+"行:[", "商品定金"+"]格式错误");
|
continue;
|
}
|
|
try {
|
BigDecimal pointsSettlementPrice = new BigDecimal(bigGiftPackageImport.getPointsSettlementPrice());
|
bigGiftPackage.setPointsSettlementPrice(pointsSettlementPrice);
|
} catch (Exception e) {
|
result.append("第"+i+"行:[", "积分结算价格"+"]格式错误");
|
continue;
|
}
|
|
try {
|
Integer inventory = Integer.parseInt(bigGiftPackageImport.getInventory());
|
bigGiftPackage.setInventory(inventory);
|
} catch (Exception e) {
|
result.append("第"+i+"行:[", "库存"+"]格式错误");
|
continue;
|
}
|
|
|
bigGiftPackages.add(bigGiftPackage);
|
i++;
|
}
|
tBigGiftPackageService.saveBatch(bigGiftPackages);
|
if(!result.isEmpty()){
|
return R.fail(result.toString());
|
}
|
return R.ok();
|
}
|
|
|
@ApiOperation(value = "大礼包导出")
|
@PostMapping(value = "/export")
|
@Log(title = "大礼包-导出", businessType = BusinessType.EXPORT)
|
public void exportRegistration(@RequestBody BigGiftPackageQuery query){
|
|
LambdaQueryWrapper<TBigGiftPackage> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TBigGiftPackage::getStatus,0);
|
wrapper.like(Objects.nonNull(query.getName()), TBigGiftPackage::getName, query.getName());
|
wrapper.orderByDesc(TBigGiftPackage::getCreateTime);
|
List<TBigGiftPackage> list = tBigGiftPackageService.list(wrapper);
|
ArrayList<BigGiftPackageImport> bigGiftPackageImports = new ArrayList<>();
|
for (TBigGiftPackage tBigGiftPackage : list) {
|
BigGiftPackageImport bigGiftPackageImport = new BigGiftPackageImport();
|
bigGiftPackageImport.setCode(tBigGiftPackage.getCode());
|
bigGiftPackageImport.setName(tBigGiftPackage.getName());
|
bigGiftPackageImport.setTotalPrice(tBigGiftPackage.getTotalPrice().toString());
|
bigGiftPackageImport.setDeposit(tBigGiftPackage.getDeposit().toString());
|
bigGiftPackageImport.setPointsSettlementPrice(tBigGiftPackage.getPointsSettlementPrice().toString());
|
bigGiftPackageImport.setIntroduction(tBigGiftPackage.getIntroduction());
|
bigGiftPackageImport.setInventory(tBigGiftPackage.getInventory().toString());
|
bigGiftPackageImports.add(bigGiftPackageImport);
|
}
|
|
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), BigGiftPackageImport.class, bigGiftPackageImports);
|
HttpServletResponse response = WebUtils.response();
|
assert response != null;
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("utf-8");
|
ServletOutputStream outputStream = null;
|
try {
|
String fileName = URLEncoder.encode("大礼包导出信息.xls", "utf-8");
|
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Pragma", "no-cache");
|
response.setHeader("Cache-Control", "no-cache");
|
outputStream = response.getOutputStream();
|
workbook.write(outputStream);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
outputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|