From e03732d651f34a014b0be113adc5cbe0789357d0 Mon Sep 17 00:00:00 2001
From: 13233904609 <13233904609@163.cm>
Date: Wed, 31 Jul 2024 07:27:45 +0800
Subject: [PATCH] 1111
---
fuintAdmin/src/main.js | 7 +-
fuintAdmin/src/utils/request.js | 43 ++++-
fuintAdmin/src/views/order/index.vue | 77 +++++++-
.../com/fuint/common/enums/OrderModeEnum.java | 30 ++++
.../com/fuint/common/enums/OrderTypeEnum.java | 14 ++
.../com/fuint/common/enums/PayTypeEnum.java | 30 ++++
.../common/excelDto/UserOrderExcelDto.java | 74 ++++++++
.../fuint/common/service/OrderService.java | 18 ++
.../common/service/impl/OrderServiceImpl.java | 167 +++++++++++++++++-
.../controller/BackendOrderController.java | 64 +++----
.../template/订单导入模板.xlsx | Bin 0 -> 9001 bytes
11 files changed, 473 insertions(+), 51 deletions(-)
create mode 100644 fuintBackend/fuint-application/src/main/java/com/fuint/common/excelDto/UserOrderExcelDto.java
create mode 100644 fuintBackend/fuint-application/src/main/resources/template/订单导入模板.xlsx
diff --git a/fuintAdmin/src/main.js b/fuintAdmin/src/main.js
index 43b4aa1..828b5b9 100644
--- a/fuintAdmin/src/main.js
+++ b/fuintAdmin/src/main.js
@@ -12,7 +12,7 @@ import store from './store'
import router from './router'
import directive from './directive' // directive
import plugins from './plugins' // plugins
-import { download } from '@/utils/request'
+import { download,download1,download2 } from '@/utils/request'
import './assets/icons' // icon
import './permission' // permission control
@@ -42,14 +42,19 @@ import Print from 'vue-print-nb'
import TreeSelect from '@/components/TreeSelect'
// 会员选择组件
import UserSelect from '@/components/UserSelect'
+import { selectDictLabel, selectDictLabels} from "@/utils/ruoyi";
// 全局方法挂载
Vue.prototype.getConfigKey = getConfigKey
+Vue.prototype.selectDictLabel = selectDictLabel
+Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.getName = getName
Vue.prototype.download = download
+Vue.prototype.download1 = download1
+Vue.prototype.download2 = download2
Vue.prototype.handleTree = handleTree
// 全局组件挂载
diff --git a/fuintAdmin/src/utils/request.js b/fuintAdmin/src/utils/request.js
index 178388b..8836f6a 100644
--- a/fuintAdmin/src/utils/request.js
+++ b/fuintAdmin/src/utils/request.js
@@ -1,14 +1,15 @@
import axios from 'axios'
-import { Notification, MessageBox, Message } from 'element-ui'
+import { Notification, MessageBox, Message, Loading } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import { tansParams } from "@/utils/fuint";
import cache from '@/plugins/cache'
-
+import request from '@/utils/request'
+import { blobValidate } from "@/utils/ruoyi";
// 是否显示重新登录
export let isRelogin = { show: false };
-
+let downloadLoadingInstance;
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
@@ -135,6 +136,42 @@ export function download(url, params) {
window.open(url, '_blank')
}
+// 通用下载方法
+export function download1(url, params) {
+ return request({
+ url: url + '?token='+ getToken() + '&'+ param(params),
+ method: 'get'
+ })
+ // url = process.env.VUE_APP_BASE_API + url + '?token='+ getToken() + '&'+ param(params)
+ // window.open(url, '_blank')
+}
+// 通用下载方法
+export function download2(url, params, filename, config) {
+ downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
+ return service.post(url, params, {
+ transformRequest: [(params) => { return tansParams(params) }],
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+ responseType: 'blob',
+ ...config
+ }).then(async (data) => {
+ const isBlob = blobValidate(data);
+ if (isBlob) {
+ const blob = new Blob([data])
+ saveAs(blob, filename)
+ } else {
+ const resText = await data.text();
+ const rspObj = JSON.parse(resText);
+ const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
+ Message.error(errMsg);
+ }
+ downloadLoadingInstance.close();
+ }).catch((r) => {
+ console.error(r)
+ Message.error('下载文件出现错误,请联系管理员!')
+ downloadLoadingInstance.close();
+ })
+}
+
// 组织参数
export function param(data) {
let url = ''
diff --git a/fuintAdmin/src/views/order/index.vue b/fuintAdmin/src/views/order/index.vue
index aa1a7a5..d10a9bc 100644
--- a/fuintAdmin/src/views/order/index.vue
+++ b/fuintAdmin/src/views/order/index.vue
@@ -91,6 +91,13 @@
查询
重置
+ 导入
@@ -387,6 +394,32 @@
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+ 仅允许导入xls、xlsx格式文件。
+ 下载模板
+
+
+
+
@@ -395,6 +428,7 @@ import { getName } from "@/utils/fuint";
import { getOrderList, updateOrderStatus, getOrderInfo, saveOrder, deleteOrder, verifyOrder, delivered } from "@/api/order";
import { doRefund } from "@/api/refund";
import orderPrintDialog from '../cashier/components/orderPrintDialog'
+import { getToken } from "@/utils/auth";
export default {
name: "OrderIndex",
components: {
@@ -486,7 +520,22 @@ export default {
{ required: true, message: "退款金额不能为空", trigger: "blur" },
{ pattern: /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/, message: `请输入正确的退款金额`, trigger: 'blur' }
]
- }
+ },
+ // 用户导入参数
+ upload: {
+ // 是否显示弹出层(用户导入)
+ open: false,
+ // 弹出层标题(用户导入)
+ title: "",
+ // 是否禁用上传
+ isUploading: false,
+ // 是否更新已经存在的用户数据
+ updateSupport: 0,
+ // 设置上传的请求头部
+ headers: { 'Access-Token': getToken() },
+ // 上传的地址
+ url: process.env.VUE_APP_BASE_API + "/backendApi/order/importData"
+ },
};
},
created() {
@@ -768,6 +817,32 @@ export default {
break;
}
},
+ /** 导入按钮操作 */
+ handleImport() {
+ this.upload.title = "用户导入";
+ this.upload.open = true;
+ },
+ /** 下载模板操作 */
+ importTemplate() {
+ this.download2('/backendApi/order/exportTemplate', {
+ }, `订单模板${new Date().getTime()}.xlsx`)
+ },
+ // 文件上传中处理
+ handleFileUploadProgress(event, file, fileList) {
+ this.upload.isUploading = true;
+ },
+ // 文件上传成功处理
+ handleFileSuccess(response, file, fileList) {
+ this.upload.open = false;
+ this.upload.isUploading = false;
+ this.$refs.upload.clearFiles();
+ this.$alert("
" + response.msg + "
", "导入结果", { dangerouslyUseHTMLString: true });
+ this.getList();
+ },
+ // 提交上传文件
+ submitFileForm() {
+ this.$refs.upload.submit();
+ }
}
};
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderModeEnum.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderModeEnum.java
index 03a8286..18d09e1 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderModeEnum.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderModeEnum.java
@@ -34,4 +34,34 @@ public enum OrderModeEnum {
public void setValue(String value) {
this.value = value;
}
+
+ /**
+ * 根据key获取value
+ *
+ * @param key
+ * @return
+ */
+ public static String getName(String key) {
+ final OrderModeEnum[] values = OrderModeEnum.values();
+ for (OrderModeEnum value : values) {
+ if (key.equals(value.getKey())) {
+ return value.getValue();
+ }
+ }
+ return null;
+ }
+ /**
+ * 根据value获取key
+ *
+ * @return
+ */
+ public static String getKeyName(String value) {
+ final OrderModeEnum[] values = OrderModeEnum.values();
+ for (OrderModeEnum order : values) {
+ if (value.equals(order.getValue())) {
+ return order.getKey();
+ }
+ }
+ return null;
+ }
}
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderTypeEnum.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderTypeEnum.java
index cff5bcb..ff22559 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderTypeEnum.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/OrderTypeEnum.java
@@ -53,4 +53,18 @@ public enum OrderTypeEnum {
}
return null;
}
+ /**
+ * 根据value获取key
+ *
+ * @return
+ */
+ public static String getKeyName(String value) {
+ final OrderTypeEnum[] values = OrderTypeEnum.values();
+ for (OrderTypeEnum order : values) {
+ if (value.equals(order.getValue())) {
+ return order.getKey();
+ }
+ }
+ return null;
+ }
}
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/PayTypeEnum.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/PayTypeEnum.java
index 5215143..e4c068d 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/PayTypeEnum.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/enums/PayTypeEnum.java
@@ -37,4 +37,34 @@ public enum PayTypeEnum {
public void setValue(String value) {
this.value = value;
}
+
+ /**
+ * 根据key获取value
+ *
+ * @param key
+ * @return
+ */
+ public static String getName(String key) {
+ final PayTypeEnum[] values = PayTypeEnum.values();
+ for (PayTypeEnum value : values) {
+ if (key.equals(value.getKey())) {
+ return value.getValue();
+ }
+ }
+ return null;
+ }
+ /**
+ * 根据value获取key
+ *
+ * @return
+ */
+ public static String getKeyName(String value) {
+ final PayTypeEnum[] values = PayTypeEnum.values();
+ for (PayTypeEnum order : values) {
+ if (value.equals(order.getValue())) {
+ return order.getKey();
+ }
+ }
+ return null;
+ }
}
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/excelDto/UserOrderExcelDto.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/excelDto/UserOrderExcelDto.java
new file mode 100644
index 0000000..6b7d07d
--- /dev/null
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/excelDto/UserOrderExcelDto.java
@@ -0,0 +1,74 @@
+package com.fuint.common.excelDto;
+
+import com.fuint.common.dto.*;
+import com.fuint.repository.model.MtRefund;
+import com.fuint.repository.model.MtStore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 会员订单实体类
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Getter
+@Setter
+public class UserOrderExcelDto implements Serializable {
+
+ @ApiModelProperty("订单类型")
+ private String type;
+
+ @ApiModelProperty("支付类型")
+ private String payType;
+
+ @ApiModelProperty("订单模式")
+ private String orderMode;
+
+ @ApiModelProperty("订单号")
+ private String orderSn;
+
+ @ApiModelProperty("所属商户")
+ private String merchantName;
+
+ @ApiModelProperty("所属店铺")
+ private String storeName;
+
+ @ApiModelProperty("用户手机号")
+ private String userName;
+
+ @ApiModelProperty("是否游客")
+ private String isVisitor;
+
+ @ApiModelProperty("订单金额")
+ private BigDecimal amount;
+
+ @ApiModelProperty("支付金额")
+ private BigDecimal payAmount;
+
+ @ApiModelProperty("使用积分数量")
+ private Integer usePoint;
+
+ @ApiModelProperty("积分金额")
+ private BigDecimal pointAmount;
+
+ @ApiModelProperty("折扣金额")
+ private BigDecimal discount;
+
+ @ApiModelProperty("配送费用")
+ private BigDecimal deliveryFee;
+
+ @ApiModelProperty("支付时间")
+ private Date payTime;
+
+ @ApiModelProperty("操作员工")
+ private String staffName;
+
+}
+
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/OrderService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/OrderService.java
index 740613e..9473837 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/OrderService.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/OrderService.java
@@ -9,6 +9,8 @@ import com.fuint.framework.exception.BusinessCheckException;
import com.fuint.framework.pagination.PaginationResponse;
import com.fuint.repository.model.MtCart;
import com.fuint.repository.model.MtOrder;
+import org.springframework.web.multipart.MultipartFile;
+
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Date;
@@ -239,4 +241,20 @@ public interface OrderService extends IService {
* @return
* */
List getTobeCommissionOrderList(String dateTime) throws BusinessCheckException;
+
+ /**
+ * 保存文件
+ *
+ * @param file excel文件
+ * @param request 操作者
+ * */
+ String saveExcelFile(MultipartFile file, HttpServletRequest request) throws Exception;
+
+ /**
+ * 导入发券列表
+ *
+ * @param file excel文件
+ * @param operator 操作者
+ * */
+ String importSendCoupon(MultipartFile file, String operator, String filePath) throws BusinessCheckException;
}
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java
index 4b9bcf5..ac0b79c 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.fuint.common.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -7,13 +8,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.common.Constants;
import com.fuint.common.dto.*;
import com.fuint.common.enums.*;
+import com.fuint.common.excelDto.UserOrderExcelDto;
import com.fuint.common.param.OrderListParam;
import com.fuint.common.param.SettlementParam;
import com.fuint.common.service.*;
-import com.fuint.common.util.CommonUtil;
-import com.fuint.common.util.DateUtil;
-import com.fuint.common.util.SeqUtil;
-import com.fuint.common.util.TokenUtil;
+import com.fuint.common.util.*;
import com.fuint.framework.annoation.OperationServiceLog;
import com.fuint.framework.exception.BusinessCheckException;
import com.fuint.framework.pagination.PaginationResponse;
@@ -30,14 +29,20 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
+import org.springframework.core.env.Environment;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
import weixin.popular.util.JsonUtil;
import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -169,6 +174,11 @@ public class OrderServiceImpl extends ServiceImpl implem
* */
private PaymentService paymentService;
+ /**
+ * 系统环境变量
+ * */
+ private Environment env;
+
/**
* 获取用户订单列表
* @param orderListParam
@@ -2116,4 +2126,153 @@ public class OrderServiceImpl extends ServiceImpl implem
public List getTobeCommissionOrderList(String dateTime) {
return mtOrderMapper.getTobeCommissionOrderList(dateTime);
}
+
+ /**
+ * 保存文件
+ *
+ * @param file excel文件
+ * @param request
+ * */
+ public String saveExcelFile(MultipartFile file, HttpServletRequest request) throws Exception {
+ String fileName = file.getOriginalFilename();
+
+ String imageName = fileName.substring(fileName.lastIndexOf("."));
+ String pathRoot = env.getProperty("images.root");
+ if (pathRoot == null || StringUtil.isEmpty(pathRoot)) {
+ pathRoot = ResourceUtils.getURL("classpath:").getPath();
+ }
+ String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+
+ String filePath = "/static/uploadFiles/"+ DateUtil.formatDate(new Date(), "yyyyMMdd")+"/";
+ String path = filePath + uuid + imageName;
+
+ try {
+ File tempFile = new File(pathRoot + path);
+ if (!tempFile.getParentFile().exists()) {
+ tempFile.getParentFile().mkdirs();
+ }
+ CommonUtil.saveMultipartFile(file, pathRoot + path);
+ } catch (Exception e) {
+ //empty
+ }
+
+ return path;
+ }
+
+ /**
+ * 导入订单列表
+ *
+ * @param file excel文件
+ * @param operator 操作者
+ * */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ @OperationServiceLog(description = "导入订单列表")
+ public String importSendCoupon(MultipartFile file, String operator, String filePath) throws BusinessCheckException {
+ String originalFileName = file.getOriginalFilename();
+ boolean isExcel2003 = XlsUtil.isExcel2003(originalFileName);
+ boolean isExcel2007 = XlsUtil.isExcel2007(originalFileName);
+
+ if (!isExcel2003 && !isExcel2007) {
+ logger.error("importSendCouponController->uploadFile:{}", "文件类型不正确");
+ throw new BusinessCheckException("文件类型不正确");
+ }
+
+ List> content = new ArrayList<>();
+ try {
+ content = XlsUtil.readExcelContent(file.getInputStream(), isExcel2003, 1, null, null, null);
+ } catch (IOException e) {
+ logger.error("CouponGroupServiceImpl->parseExcelContent{}", e);
+ throw new BusinessCheckException("导入失败"+e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ StringBuffer errorMsg = new StringBuffer();
+ StringBuffer errorMsgNoGroup = new StringBuffer();
+ StringBuffer errorMsgNoNum = new StringBuffer();
+ StringBuffer errorMsgNoRegister = new StringBuffer();
+
+ List rows = new ArrayList<>();
+
+ for (int i = 0; i < content.size(); i++) {
+ List groupIdArr = new ArrayList<>();
+ List numArr = new ArrayList<>();
+
+ List rowContent = content.get(i);
+ MtOrder order = new MtOrder();
+ String type = rowContent.get(0);
+ if(StringUtil.isNotEmpty(type)){
+ String keyName = OrderTypeEnum.getKeyName(type);
+ if(StringUtil.isNotEmpty(keyName)){
+ type = keyName;
+ }
+ }
+ order.setType(type);
+ String payType = rowContent.get(1);
+ if(StringUtil.isNotEmpty(payType)){
+ String keyName = PayTypeEnum.getKeyName(payType);
+ if(StringUtil.isNotEmpty(keyName)){
+ payType = keyName;
+ }
+ }
+ order.setPayType(payType);
+ String orderMode = rowContent.get(2);
+ if(StringUtil.isNotEmpty(orderMode)){
+ String keyName = OrderModeEnum.getKeyName(orderMode);
+ if(StringUtil.isNotEmpty(keyName)){
+ orderMode = keyName;
+ }
+ }
+ order.setOrderMode(orderMode);
+ String orderSn = rowContent.get(3);
+ order.setOrderSn(orderSn);
+ String merchantName = rowContent.get(4);
+// order.setMerchantId();
+ String storeName = rowContent.get(5);
+ if(StringUtil.isNotEmpty(storeName)){
+ StoreDto storeDto = storeService.queryStoreByName(storeName);
+ if(ObjectUtil.isNotEmpty(storeDto)){
+ order.setStoreId(storeDto.getId());
+ }
+ }
+ String userName = rowContent.get(6);
+ String isVisitor = rowContent.get(7);
+ order.setIsVisitor(isVisitor);
+ String amount = rowContent.get(8);
+ if(StringUtil.isNotEmpty(amount)){
+ order.setAmount(new BigDecimal(amount));
+ }
+ String payAmount = rowContent.get(9);
+ if(StringUtil.isNotEmpty(payAmount)){
+ order.setPayAmount(new BigDecimal(payAmount));
+ }
+ String usePoint = rowContent.get(10);
+ if(StringUtil.isNotEmpty(usePoint)){
+ order.setUsePoint(Integer.valueOf(usePoint));
+ }
+ String pointAmount = rowContent.get(11);
+ if(StringUtil.isNotEmpty(pointAmount)){
+ order.setPointAmount(new BigDecimal(pointAmount));
+ }
+ String discount = rowContent.get(12);
+ if(StringUtil.isNotEmpty(discount)){
+ order.setDiscount(new BigDecimal(discount));
+ }
+ String deliveryFee = rowContent.get(13);
+ if(StringUtil.isNotEmpty(deliveryFee)){
+ order.setDeliveryFee(new BigDecimal(deliveryFee));
+ }
+ String payTime = rowContent.get(14);
+ String staffName = rowContent.get(15);
+// order.setStaffId();
+ mtOrderMapper.insert(order);
+ }
+
+
+ // 导入批次
+ String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+
+ return uuid;
+ }
}
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendOrderController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendOrderController.java
index a4b6835..d591330 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendOrderController.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendOrderController.java
@@ -585,7 +585,7 @@ public class BackendOrderController extends BaseController {
* @throws BusinessCheckException
*/
@ApiOperation(value = "导出模板文件")
- @RequestMapping(value = "/exportTemplate", method = RequestMethod.GET)
+ @RequestMapping(value = "/exportTemplate", method = RequestMethod.POST)
@CrossOrigin
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) throws BusinessCheckException {
ClassLoader classLoader = this.getClass().getClassLoader();
@@ -594,9 +594,9 @@ public class BackendOrderController extends BaseController {
ExcelExportDto excelExportDto = new ExcelExportDto();
excelExportDto.setSrcPath(srcTemplateFilePath);
- excelExportDto.setSrcTemplateFileName("template" + File.separator + "importTemplate.xlsx");
+ excelExportDto.setSrcTemplateFileName("template" + File.separator + "订单导入模板.xlsx");
- String filename = "订单模板" + ".xlsx";
+ String filename = "订单导入模板" + ".xlsx";
try {
OutputStream out = response.getOutputStream();
XlsUtil.setXlsHeader(request, response, filename);
@@ -608,45 +608,25 @@ public class BackendOrderController extends BaseController {
}
}
+ /**
+ * 上传文件
+ *
+ * @param request
+ * @throws
+ */
+ @ApiOperation(value = "上传文件")
+ @RequestMapping(value = "/importData", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
+ @CrossOrigin
+ public ResponseObject uploadFile(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws Exception {
+ String token = request.getHeader("Access-Token");
+ AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
+ if (accountInfo == null) {
+ return getFailureResult(1001, "请先登录");
+ }
-// @PreAuthorize("@ss.hasPermi('system:user:import')")
-// @PostMapping("/importData")
-// public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-// {
-// ExcelUtil util = new ExcelUtil(SysUser.class);
-// List userList = util.importExcel(file.getInputStream());
-// LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-// String operName = loginUser.getUsername();
-// String message = userService.importUser(userList, updateSupport, operName);
-// return AjaxResult.success(message);
-// }
-//
-// @GetMapping("/importTemplate")
-// public AjaxResult importTemplate()
-// {
-// ExcelUtil util = new ExcelUtil(SysUser.class);
-// return util.importTemplateExcel("用户数据");
-// }
-
-// /**
-// * 上传文件
-// *
-// * @param request
-// * @throws
-// */
-// @ApiOperation(value = "上传文件")
-// @RequestMapping(value = "/upload/", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
-// @CrossOrigin
-// public ResponseObject uploadFile(HttpServletRequest request, @RequestParam("fileInput") MultipartFile file) throws Exception {
-// String token = request.getHeader("Access-Token");
-// AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-// if (accountInfo == null) {
-// return getFailureResult(1001, "请先登录");
-// }
-//
-// String filePath = couponGroupService.saveExcelFile(file, request);
-// String uuid = couponGroupService.importSendCoupon(file, accountInfo.getAccountName(), filePath);
-// return getSuccessResult(uuid);
-// }
+ String filePath = orderService.saveExcelFile(file, request);
+ String uuid = orderService.importSendCoupon(file, accountInfo.getAccountName(), filePath);
+ return getSuccessResult(uuid);
+ }
}
diff --git a/fuintBackend/fuint-application/src/main/resources/template/订单导入模板.xlsx b/fuintBackend/fuint-application/src/main/resources/template/订单导入模板.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..8b93e0381b0569231c484868183b85fcaaa0ee09
GIT binary patch
literal 9001
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
literal 0
HcmV?d00001