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 ee9c302..919e828 100644 Binary files a/template/example.xlsx and b/template/example.xlsx differ