From 867d36b4b49e3636f754c9f270561dde35e8f77d Mon Sep 17 00:00:00 2001
From: xinsin <2890826955@qq.com>
Date: Fri, 9 Jun 2023 13:42:28 +0800
Subject: [PATCH] 123
---
pom.xml | 2 +-
.../xinsin/controller/OrderController.java | 2 +-
.../controller/WebSocketController.java | 6 +-
src/main/java/top/xinsin/pojo/Order.java | 208 +-----------------
.../java/top/xinsin/pojo/OrderByExcel.java | 67 ++++++
.../java/top/xinsin/service/OrderService.java | 63 +++++-
.../top/xinsin/service/WebSocketService.java | 67 +++---
.../java/top/xinsin/util/ExcelParserUtil.java | 15 +-
.../java/top/xinsin/util/StringConstant.java | 1 +
src/main/resources/application.yml | 12 +-
template/example.xlsx | Bin 9922 -> 10189 bytes
11 files changed, 187 insertions(+), 256 deletions(-)
create mode 100644 src/main/java/top/xinsin/pojo/OrderByExcel.java
diff --git a/pom.xml b/pom.xml
index a38f594..5c7e053 100644
--- a/pom.xml
+++ b/pom.xml
@@ -130,7 +130,7 @@
com.alibaba
easyexcel
- 3.2.1
+ 3.3.2
org.springframework.boot
diff --git a/src/main/java/top/xinsin/controller/OrderController.java b/src/main/java/top/xinsin/controller/OrderController.java
index 923f33a..de35a04 100644
--- a/src/main/java/top/xinsin/controller/OrderController.java
+++ b/src/main/java/top/xinsin/controller/OrderController.java
@@ -49,5 +49,5 @@ public class OrderController {
public void downloadTemplate(HttpServletResponse response) {this.orderService.downloadTemplate(response);}
@RequestMapping(path = "/uploadBatch", method = RequestMethod.POST)
- public void uploadBatch(@RequestParam("file") MultipartFile file) {this.orderService.uploadBatch(file);}
+ public R uploadBatch(@RequestParam("file") MultipartFile file) {return this.orderService.uploadBatch(file);}
}
diff --git a/src/main/java/top/xinsin/controller/WebSocketController.java b/src/main/java/top/xinsin/controller/WebSocketController.java
index 0b23272..0bc26ea 100644
--- a/src/main/java/top/xinsin/controller/WebSocketController.java
+++ b/src/main/java/top/xinsin/controller/WebSocketController.java
@@ -37,7 +37,7 @@ public class WebSocketController {
this.userId = userId;
//加入map
webSocketMap.put(userId, this);
- R stringR = webSocketService.addVerify(userId);
+ R stringR = webSocketService.addVerify(userId,this);
sendMessageByUserId(userId, stringR);
}
@OnClose
@@ -73,9 +73,9 @@ public class WebSocketController {
log.error("用户{}不在线",userId);
}
}
- @Scheduled(fixedRate = 10000)
+ @Scheduled(fixedRate = 1000)
public void verifyTime(){
- List expireTimes = webSocketService.getExpireTimes();
+ List expireTimes = webSocketService.getExpireTimes(webSocketMap.keys());
expireTimes.forEach(e -> {
if(webSocketMap.containsKey(e)){
webSocketMap.get(e).sendMessage(JSON.toJSONString(R.success(new JSONObject().fluentPut("info","当前登录用户已过期"))));
diff --git a/src/main/java/top/xinsin/pojo/Order.java b/src/main/java/top/xinsin/pojo/Order.java
index c958d39..ea40c59 100644
--- a/src/main/java/top/xinsin/pojo/Order.java
+++ b/src/main/java/top/xinsin/pojo/Order.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
@@ -22,264 +23,61 @@ import java.util.Date;
*/
@TableName("shop_order")
@ExcelIgnoreUnannotated
+@Accessors(chain = true)
+@Data
public class Order implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelIgnore
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
- @ExcelProperty({"订单号"})
@TableField("order_no")
private String orderNo;
- @ExcelProperty({"下单时间"})
@TableField("order_time")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date orderTime;
- @ExcelProperty({"订单状态"})
@TableField("order_status")
private String orderStatus;
- @ExcelProperty({"旺旺号"})
@TableField("wang_no")
private String wangNo;
- @ExcelProperty({"微信|qq账号"})
@TableField("wechat_no")
private String wechatNo;
- @ExcelProperty({"支付宝账号"})
@TableField("alipay_no")
private String alipayNo;
- @ExcelProperty({"付款金额"})
@TableField("pay_amt")
private Double payAmt;
- @ExcelProperty({"店铺名称"})
@TableField("store_id")
private Integer storeId;
- @ExcelProperty({"佣金"})
@TableField("commission")
private Double commission;
- @ExcelProperty({"支付宝名称"})
@TableField("alipay_name")
private String alipayName;
- @ExcelProperty({"放单人"})
@TableField("rp_name")
private String rpName;
- @ExcelProperty({"放单人微信名"})
@TableField("rp_wechat_name")
private String rpWechatName;
- @ExcelProperty({"备注"})
@TableField("remark")
private String remark;
- @ExcelProperty({"买家电话"})
@TableField("phone_number")
private String phoneNumber;
- @ExcelProperty({"银行卡号"})
@TableField("card_no")
private String cardNo;
- @ExcelProperty({"插旗"})
@TableField("flag")
private Integer flag;
- @ExcelProperty({"插旗备注"})
@TableField("flag_remark")
private String flagRemark;
- @ExcelProperty({"付款时间"})
@TableField("pay_time")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date payTime;
- @ExcelProperty({"收货地址"})
@TableField("address")
private String address;
- @ExcelProperty({"商品id"})
@TableField("shop_id")
private Integer shopId;
- @ExcelProperty({"sku"})
@TableField("sku")
private String sku;
@ExcelIgnore
@TableField(exist = false)
private String storeName;
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getOrderNo() {
- return orderNo;
- }
-
- public void setOrderNo(String orderNo) {
- this.orderNo = orderNo;
- }
-
- public Date getOrderTime() {
- return orderTime;
- }
-
- public void setOrderTime(Date orderTime) {
- this.orderTime = orderTime;
- }
-
- public String getOrderStatus() {
- return orderStatus;
- }
-
- public void setOrderStatus(String orderStatus) {
- this.orderStatus = orderStatus;
- }
-
- public String getWangNo() {
- return wangNo;
- }
-
- public void setWangNo(String wangNo) {
- this.wangNo = wangNo;
- }
-
- public String getWechatNo() {
- return wechatNo;
- }
-
- public void setWechatNo(String wechatNo) {
- this.wechatNo = wechatNo;
- }
-
- public String getAlipayNo() {
- return alipayNo;
- }
-
- public void setAlipayNo(String alipayNo) {
- this.alipayNo = alipayNo;
- }
-
- public Double getPayAmt() {
- return payAmt;
- }
-
- public void setPayAmt(Double payAmt) {
- this.payAmt = payAmt;
- }
-
- public Integer getStoreId() {
- return storeId;
- }
-
- public void setStoreId(Integer storeId) {
- this.storeId = storeId;
- }
-
- public Double getCommission() {
- return commission;
- }
-
- public void setCommission(Double commission) {
- this.commission = commission;
- }
-
- public String getAlipayName() {
- return alipayName;
- }
-
- public void setAlipayName(String alipayName) {
- this.alipayName = alipayName;
- }
-
- public String getRpName() {
- return rpName;
- }
-
- public void setRpName(String rpName) {
- this.rpName = rpName;
- }
-
- public String getRpWechatName() {
- return rpWechatName;
- }
-
- public void setRpWechatName(String rpWechatName) {
- this.rpWechatName = rpWechatName;
- }
-
- public String getRemark() {
- return remark;
- }
-
- public void setRemark(String remark) {
- this.remark = remark;
- }
-
- public String getPhoneNumber() {
- return phoneNumber;
- }
-
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
-
- public String getCardNo() {
- return cardNo;
- }
-
- public void setCardNo(String cardNo) {
- this.cardNo = cardNo;
- }
-
- public Integer getFlag() {
- return flag;
- }
-
- public void setFlag(Integer flag) {
- this.flag = flag;
- }
-
- public String getFlagRemark() {
- return flagRemark;
- }
-
- public void setFlagRemark(String flagRemark) {
- this.flagRemark = flagRemark;
- }
-
- public Date getPayTime() {
- return payTime;
- }
-
- public void setPayTime(Date payTime) {
- this.payTime = payTime;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public Integer getShopId() {
- return shopId;
- }
-
- public void setShopId(Integer shopId) {
- this.shopId = shopId;
- }
-
- public String getSku() {
- return sku;
- }
-
- public void setSku(String sku) {
- this.sku = sku;
- }
-
- public String getStoreName() {
- return storeName;
- }
-
- public void setStoreName(String storeName) {
- this.storeName = storeName;
- }
}
diff --git a/src/main/java/top/xinsin/pojo/OrderByExcel.java b/src/main/java/top/xinsin/pojo/OrderByExcel.java
new file mode 100644
index 0000000..cd452f1
--- /dev/null
+++ b/src/main/java/top/xinsin/pojo/OrderByExcel.java
@@ -0,0 +1,67 @@
+package top.xinsin.pojo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @author xinsin
+ * Created On 2023/6/9 09:25
+ * @version 1.0
+ */
+@Getter
+@Setter
+@EqualsAndHashCode
+@ExcelIgnoreUnannotated
+public class OrderByExcel {
+ @ExcelProperty("订单号")
+ private String orderNo;
+ @ExcelProperty("下单时间")
+ @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+ private String orderTime;
+ @ExcelProperty("订单状态")
+ private String orderStatus;
+ @ExcelProperty("旺旺号")
+ private String wangNo;
+ @ExcelProperty("微信|qq账号")
+ private String wechatNo;
+ @ExcelProperty("支付宝账号")
+ private String alipayNo;
+ @ExcelProperty("付款金额")
+ private String payAmt;
+ @ExcelProperty("店铺名称")
+ private String storeId;
+ @ExcelProperty("佣金")
+ private String commission;
+ @ExcelProperty("支付宝名称")
+ private String alipayName;
+ @ExcelProperty("放单人")
+ private String rpName;
+ @ExcelProperty("放单人微信名")
+ private String rpWechatName;
+ @ExcelProperty("备注")
+ private String remark;
+ @ExcelProperty("买家电话")
+ private String phoneNumber;
+ @ExcelProperty("银行卡号")
+ private String cardNo;
+ @ExcelProperty("插旗")
+ private String flag;
+ @ExcelProperty("插旗备注")
+ private String flagRemark;
+ @ExcelProperty("付款时间")
+ @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+ private String payTime;
+ @ExcelProperty("收货地址")
+ private String address;
+ @ExcelProperty("商品id")
+ private String shopId;
+ @ExcelProperty("sku")
+ private String sku;
+}
diff --git a/src/main/java/top/xinsin/service/OrderService.java b/src/main/java/top/xinsin/service/OrderService.java
index c9d7488..60ef6a8 100644
--- a/src/main/java/top/xinsin/service/OrderService.java
+++ b/src/main/java/top/xinsin/service/OrderService.java
@@ -1,18 +1,17 @@
package top.xinsin.service;
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.servlet.http.HttpServletResponse;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import top.xinsin.enums.OrderStatus;
import top.xinsin.enums.SearchType;
@@ -21,9 +20,8 @@ import top.xinsin.mapper.OrderMapper;
import top.xinsin.mapper.StoreMapper;
import top.xinsin.pojo.Commission;
import top.xinsin.pojo.Order;
+import top.xinsin.pojo.OrderByExcel;
import top.xinsin.pojo.Store;
-import top.xinsin.pojo.vo.OrderVO;
-import top.xinsin.util.ExcelParserUtil;
import top.xinsin.util.HttpCodes;
import top.xinsin.util.R;
@@ -31,8 +29,14 @@ import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* @author xinsin
@@ -169,11 +173,48 @@ public class OrderService extends ServiceImpl implements Orde
}
@SneakyThrows
- public void uploadBatch(MultipartFile file) {
- try {
- EasyExcel.read(file.getInputStream(), Order.class, new ExcelParserUtil(this)).headRowNumber(2).sheet().doRead();
- } catch (Throwable var3) {
- throw var3;
- }
+ @Transactional
+ public R uploadBatch(MultipartFile file) {
+ DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ AtomicInteger total = new AtomicInteger();
+ AtomicBoolean status = new AtomicBoolean(false);
+ EasyExcel.read(file.getInputStream(),OrderByExcel.class,new PageReadListener(list -> {
+ list.remove(0);
+ total.addAndGet(list.size());
+ List orders = new ArrayList<>();
+ list.forEach(e -> {
+ try {
+ orders.add(new Order()
+ .setOrderNo(e.getOrderNo())
+ .setOrderTime(e.getOrderTime() != null ? fmt.parse(e.getOrderTime()) : null)
+ .setOrderStatus(e.getOrderStatus())
+ .setWangNo(e.getWangNo())
+ .setWechatNo(e.getWechatNo())
+ .setAlipayNo(e.getAlipayNo())
+ .setPayAmt(e.getPayAmt() != null ? Double.parseDouble(e.getPayAmt()) : null)
+ .setStoreId(e.getStoreId() != null ? Integer.parseInt(e.getStoreId()) : null)
+ .setCommission(e.getCommission() != null ? Double.parseDouble(e.getCommission()) : null)
+ .setAlipayName(e.getAlipayName())
+ .setRpName(e.getRpName())
+ .setRpWechatName(e.getRpWechatName())
+ .setRemark(e.getRemark())
+ .setPhoneNumber(e.getPhoneNumber())
+ .setCardNo(e.getCardNo())
+ .setFlag(e.getFlag() != null ? Integer.parseInt(e.getFlag()) : null)
+ .setFlagRemark(e.getFlagRemark())
+ .setPayTime(e.getPayTime() != null ? fmt.parse(e.getPayTime()) : null)
+ .setAddress(e.getAddress())
+ .setShopId(e.getShopId() != null ? Integer.parseInt(e.getStoreId()) : null)
+ .setSku(e.getSku())
+ );
+ } catch (ParseException ex) {
+ throw new RuntimeException(ex);
+ }
+ log.info(" ==> 解析一条数据: {}", JSONObject.toJSONString(e));
+ });
+ log.info(" ==> 共全部数据: {}",total.get());
+ status.set(this.saveBatch(orders));
+ })).sheet().doRead();
+ return R.success(new JSONObject().fluentPut("total",total.get()).fluentPut("status",status.get()));
}
}
diff --git a/src/main/java/top/xinsin/service/WebSocketService.java b/src/main/java/top/xinsin/service/WebSocketService.java
index 55f6c45..8d2b696 100644
--- a/src/main/java/top/xinsin/service/WebSocketService.java
+++ b/src/main/java/top/xinsin/service/WebSocketService.java
@@ -1,6 +1,7 @@
package top.xinsin.service;
import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
@@ -17,15 +18,10 @@ import top.xinsin.util.HttpCodes;
import top.xinsin.util.R;
import top.xinsin.util.StringConstant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
-import static org.apache.naming.SelectorContext.prefix;
-
@Service
@Slf4j
public class WebSocketService {
@@ -34,30 +30,48 @@ public class WebSocketService {
@Autowired
private VerifyMapper verifyMapper;
- public R addVerify(String userId){
+ private Map adminBYStoreId = new HashMap<>();
+
+ public R addVerify(String userId, WebSocketController session){
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setKeySerializer(stringSerializer);
- if (userId.equals("-114514")){
- return R.success("检测为管理员登录");
+ JSONObject jsonObject = new JSONObject();
+ if (userId.startsWith("-114514_")){
+ adminBYStoreId.put(userId.replace("-114514_",""),session);
+// 筛选出当前过期的数据
+ Set noVerify = redisTemplate.keys(StringConstant.NO_VERIFY_PRE + "*");
+ Set verify = redisTemplate.keys(StringConstant.VERIFY_PRE + "*");
+ List list = new ArrayList<>();
+ assert noVerify != null;
+ noVerify.forEach(e -> list.add(e.replace(StringConstant.NO_VERIFY_PRE, "")));
+ assert verify!= null;
+ List list2 = new ArrayList<>();
+ verify.forEach(e -> list2.add(e.replace(StringConstant.VERIFY_PRE, "")));
+ List list1 = list.stream().filter(e -> !list2.contains(e)).toList();
+ JSONArray jsonArray = new JSONArray();
+ Arrays.stream(userId.replace("-114514_", "").split(",")).filter(list1::contains).forEach(jsonArray::add);
+ jsonObject.fluentPut("expire",jsonArray);
+ return R.success(jsonObject.fluentPut("info","检测为管理员登录"));
}
Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId);
- Object o1 = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no");
- System.out.println(o == null);
- System.out.println(o1 == null);
+ Object o1 = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId);
if (o == null && o1 == null){
Verify verify = verifyMapper.selectOne(new LambdaQueryWrapper().eq(Verify::getStoreId, userId));
if (verify != null){
if(userId.equals(String.valueOf(verify.getStoreId()))) {
redisTemplate.opsForValue().set(StringConstant.VERIFY_PRE + userId, String.valueOf(verify.getNum()), verify.getCountdown(), TimeUnit.SECONDS);
- redisTemplate.opsForValue().set(StringConstant.VERIFY_PRE + userId + "_no", String.valueOf(verify.getNum()));
- return R.success("已将该用户过期时间存入");
+ redisTemplate.opsForValue().set(StringConstant.NO_VERIFY_PRE + userId, String.valueOf(verify.getNum()));
+ jsonObject.fluentPut("info","已将该用户过期时间存入");
+ return R.success(jsonObject);
}
}
}else{
- return R.success("当前用户已存在");
+ jsonObject.fluentPut("info","当前用户已存在");
+ return R.success(jsonObject);
}
- return R.failed(HttpCodes.HTTP_CODES500,"不存在该用户");
+ jsonObject.fluentPut("info","不存在该用户");
+ return R.failed(HttpCodes.HTTP_CODES500,jsonObject);
}
public R parseMessage(String userId, String message, ConcurrentHashMap webSocketMap){
JSONObject parse = JSONObject.parse(message);
@@ -83,7 +97,7 @@ public class WebSocketService {
String verifyResult = String.valueOf(parse.get("verifyResult"));
String userId = String.valueOf(parse.get("userId"));
- int i = Integer.parseInt(String.valueOf(redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no")));
+ int i = Integer.parseInt(String.valueOf(redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId)));
System.out.println(i);
Verify verify = new Verify();
verify.setVerifyResult(verifyResult);
@@ -100,7 +114,7 @@ public class WebSocketService {
}else{
if (webSocketMap.containsKey(userId)){
webSocketMap.get(userId).sendMessage(JSON.toJSONString(new JSONObject().fluentPut("info","管理员已同意你的验证信息,请重新登录")));
- redisTemplate.delete(StringConstant.VERIFY_PRE + userId + "_no");
+ redisTemplate.delete(StringConstant.NO_VERIFY_PRE + userId);
Verify verify1 = new Verify();
verify.setVerifyPhone("");
verify.setVerifyName("");
@@ -114,7 +128,7 @@ public class WebSocketService {
Long expire = redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId);
assert expire != null;
if (expire.equals(-2L)){
- Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no");
+ Object o = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId);
if (o != null){
return R.success(new JSONObject().fluentPut("info","当前用户登录已过期"));
}
@@ -126,7 +140,7 @@ public class WebSocketService {
private R addVerifyInfo(String userId, JSONObject parse) {
Long expire = redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId);
- Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no");
+ Object o = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId);
assert expire != null;
if (expire.equals(-2L) && o != null){
Object verifyName = parse.get("verifyName");
@@ -143,19 +157,22 @@ public class WebSocketService {
private R ping(String userId) {
return R.success(new JSONObject().fluentPut("info","pong").fluentPut("time",redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId)));
}
- public List getExpireTimes(){
+ public List getExpireTimes(Enumeration keys){
List expireUser = new ArrayList<>();
- Set keys = redisTemplate.keys(prefix.concat(StringConstant.VERIFY_PRE + "*"));
+
+// Set keys = redisTemplate.keys(StringConstant.VERIFY_PRE + "*");
assert keys != null;
- keys.forEach(e -> {
+ Iterator iterator = keys.asIterator();
+ while (iterator.hasNext()){
+ String e = StringConstant.VERIFY_PRE + iterator.next();
if (Objects.equals(redisTemplate.getExpire(e), -1L)){
expireUser.add(e);
redisTemplate.delete(e);
}else if (Objects.equals(redisTemplate.getExpire(e),-2L)){
+ expireUser.add(e);
redisTemplate.delete(e);
}
- });
-// log.info("{}",keys);
+ }
return expireUser;
}
}
diff --git a/src/main/java/top/xinsin/util/ExcelParserUtil.java b/src/main/java/top/xinsin/util/ExcelParserUtil.java
index d5a5480..d6a74f3 100644
--- a/src/main/java/top/xinsin/util/ExcelParserUtil.java
+++ b/src/main/java/top/xinsin/util/ExcelParserUtil.java
@@ -4,13 +4,16 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.read.processor.AnalysisEventProcessor;
+import com.alibaba.excel.util.ListUtils;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import top.xinsin.mapper.OrderMapper;
import top.xinsin.pojo.Order;
+import top.xinsin.pojo.OrderByExcel;
import top.xinsin.service.OrderService;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -19,7 +22,7 @@ import java.util.List;
* @version 1.0
*/
@Slf4j
-public class ExcelParserUtil extends AnalysisEventListener {
+public class ExcelParserUtil extends AnalysisEventListener {
/**
* 每次读取的最大数据条数
*/
@@ -33,7 +36,7 @@ public class ExcelParserUtil extends AnalysisEventListener {
/**
* 可接收任何参数的泛型List集合
*/
- List list = new ArrayList<>();
+ List list = ListUtils.newArrayListWithExpectedSize(MAX_BATCH_COUNT);
List total = new ArrayList<>();
@@ -48,7 +51,7 @@ public class ExcelParserUtil extends AnalysisEventListener {
}
@Override
- public void invoke(Order data, AnalysisContext analysisContext) {
+ public void invoke(OrderByExcel data, AnalysisContext analysisContext) {
log.info(" ==> 解析一条数据: {}", data);
list.add(data);
if (list.size() > MAX_BATCH_COUNT) {
@@ -74,7 +77,11 @@ public class ExcelParserUtil extends AnalysisEventListener {
*/
private void saveData() {
log.info(" ==> 数据保存开始: {}", list.size());
- dynamicService.saveBatch(list);
+ list.forEach(e -> {
+
+ System.out.println(e.getOrderNo());
+ });
+// dynamicService.saveBatch(list);
log.info(" ==> 数据保存结束 <==");
}
diff --git a/src/main/java/top/xinsin/util/StringConstant.java b/src/main/java/top/xinsin/util/StringConstant.java
index 8697786..160ab0f 100644
--- a/src/main/java/top/xinsin/util/StringConstant.java
+++ b/src/main/java/top/xinsin/util/StringConstant.java
@@ -7,4 +7,5 @@ public class StringConstant {
public static final String ID_REGEX = "[0-9]*";
public static final String VERIFY_PRE = "verify_";
+ public static final String NO_VERIFY_PRE = "no_verify_";
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 2e1da3b..32b5534 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,12 +2,12 @@ server:
port: 8001
spring:
datasource:
- username: commerce
- password: Jix656dzD6St4YCn_
-# username: commerce_system
-# password: Jix656dzD6St4YCn
- url: jdbc:mysql://localhost:3306/commerce_system?serverTimezone=UTC-8
-# url: jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8
+# username: commerce
+# password: Jix656dzD6St4YCn_
+ username: commerce_system
+ password: Jix656dzD6St4YCn
+# url: jdbc:mysql://localhost:3306/commerce_system?serverTimezone=UTC-8
+ url: jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8
driver-class-name: com.mysql.cj.jdbc.Driver
# druid配置
type: com.alibaba.druid.pool.DruidDataSource
diff --git a/template/example.xlsx b/template/example.xlsx
index ee9c302f4d2acc005ec3cfe495044c3e94e9e29b..919e82841e5a0fdcd9bb149e1b7677564d177c7a 100644
GIT binary patch
delta 4305
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
F_#X&S2H^kz
delta 3999
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