记得上下班打卡 | git大法好,push需谨慎

Commit 2c6163fb authored by 胡佳晨's avatar 胡佳晨

Merge remote-tracking branch 'origin/dev_goblin' into dev_goblin

parents 519b836c ffd6f2bb
......@@ -58,12 +58,16 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable {
@ApiModelProperty(position = 23, required = false, value = "ISBN,针对CD/图书等[100]")
private String skuIsbn;
@ApiModelProperty(position = 24, required = true, value = "购买限制[0-全部用户|1-仅会员|2-指定用户]")
@Pattern(regexp = "\\b(0|1|2)\\b", message = "购买限制参数无效")
private String buyFactor;
@ApiModelProperty(position = 25, required = false, value = "购买限制人员名单[购买限制为2-指定用户时必填]")
@ApiModelProperty(position = 25, required = false, value = "购买限制人员名单,购买限制为2-指定用户时必填")
private String buyRoster;
@ApiModelProperty(position = 26, required = false, value = "限量[0-无限制|X:限购数量]")
@ApiModelProperty(position = 26, required = false, value = "购买限制人员名单操作类型[1-添加|2-删除],购买限制为2-指定用户时有效")
@Pattern(regexp = "\\b(1|2)\\b", message = "购买限制人员名单操作类型参数无效")
private String buyRosterType;
@ApiModelProperty(position = 27, required = false, value = "限量[0-无限制|X:限购数量]")
private Integer buyLimit;
@ApiModelProperty(position = 27, required = false, value = "单品有效期[yyyy-MM-dd HH:mm:ss]")
@ApiModelProperty(position = 28, required = false, value = "单品有效期[yyyy-MM-dd HH:mm:ss]")
@Pattern(regexp = LnsRegex.Valid.DATETIME_FULL, message = "单品有效期格式有误")
private String skuValidity;
......
......@@ -145,14 +145,14 @@
<span><em style="color:red">*</em>一级分类:</span>
<input class="form-control" id="firstTypeIpt" type="text">
<select class="form-control" name="tagType" id="firstTypeSelect" style="display: none;">
<option value="">全部</option>
<option value="" style="display: none;">全部</option>
</select>
</div>
<div class="selectClassifyOne selectClassifyOne2" style="display: none;">
<span><em style="color:red">*</em>二级分类:</span>
<input class="form-control" id="secondTypeIpt" type="text">
<select class="form-control" name="tagType" id="secondTypeSelect">
<option value="">全部</option>
<option value="" style="display: none;">全部</option>
</select>
</div>
<div class="selectClassifyOne selectClassifyOne3" style="display: none;">
......@@ -363,10 +363,10 @@
str += `<option value="${item.cateId}">${item.name}</option>`
})
if (!parentsId) {
$("#firstTypeSelect").empty().append('<option value="">全部</option>');
$("#firstTypeSelect").empty().append('<option value="" style="display: none;">全部</option>');
$("#firstTypeSelect").append(str);
} else {
$("#secondTypeSelect").empty().append('<option value="">全部</option>');
$("#secondTypeSelect").empty().append('<option value="" style="display: none;">全部</option>');
$("#secondTypeSelect").append(str);
}
}
......
......@@ -355,6 +355,8 @@
closeModal();
reset()
$("button[name=refresh]").click()
} else {
layer.msg(res.msg)
}
}
})
......
......@@ -201,8 +201,8 @@
</div> -->
</div>
<div class="content_footer">
<button class="btn btn-primary" onclick="auditAccept()">审核通过</button>
<button class="btn btn-danger" style="margin: 0 12px" onclick="auditReject()">驳回</button>
<button class="btn btn-primary" type="button" onclick="auditAccept()">审核通过</button>
<button class="btn btn-danger" type="button" style="margin: 0 12px" onclick="auditReject()">驳回</button>
<input id="reason" class="form-control" placeholder="请输入驳回原因" type="text">
</div>
</form>
......@@ -237,14 +237,21 @@
// var r = window.location.search.substr(1).match(reg);
// console.log(r, storeId, '取到没')
let storeId = storeInfo.storeId;
if (storeInfo.status == 3 || storeInfo.status == 2) {
$(".content_footer").hide();
}
/* 店铺审核:通过 */
function auditAccept() {
if (!acceptFlg) {
$.modal.confirm("确认要通过该店铺申请吗?", function() {
$.operate.post(prefix + "/audit/accept", { "storeId": storeId });
$.operate.post(prefix + "/audit/accept", { "storeId": storeId }, function (res) {
console.log(res)
if (res.code == 0) {
$(".content_footer").hide();
}
});
});
}
}
......@@ -256,7 +263,11 @@
if (!value) {
return layer.msg('请填写原因!')
}
$.operate.post(prefix + "/audit/reject", { "storeId": storeId, "reason": value });
$.operate.post(prefix + "/audit/reject", { "storeId": storeId, "reason": value }, function (res) {
if (res.code == 0) {
$(".content_footer").hide();
}
});
}
}
......
......@@ -297,6 +297,9 @@
$("#viewImg").attr('src', '');
}
function yes(index, layero) {
if (!$("#musicName").val() || !$("#viewImg").attr('src')) {
return layer.msg('请将内容填写完整!')
}
let data = {
tagName: $("#musicName").val(),
tagPic: $("#viewImg").attr('src')
......
......@@ -110,7 +110,7 @@
<div class="home_page">
<div class="left_content">
<div class="left_title">
<img id="testImg" src="" style="display: none;" alt="">
</div>
<div class="function_btn">
<div class="hot_title">
......@@ -134,7 +134,7 @@
</div>
<div id="tags" class="tags">
<button type="button" class="btn btn-warning" style="margin-right: 12px;" onclick="addItem(0)">添加banner</button>
<span id="tall">(最多允许添加10张图,建议宽度750像素)</span>
<span id="tall">(最多允许添加10张图,宽度为764像素,高度为1018像素)</span>
</div>
</div>
<div id="bannerList" class="banner_list">
......@@ -557,12 +557,21 @@
dropZoneTitle: "请上传文件",
maxFileCount: 1
}).on("filebatchselected", function (event, files) { //默认上传
console.log(files,$(this))
$(this).fileinput("upload");
})
.on("fileuploaded", function (event, data) { //上传回调事件
let showPicture = 'https://img.zhengzai.tv/' + data.response.data.ossPath;
$("#testImg").attr('src', showPicture);
setTimeout(()=>{
if (type == 1) {
console.log($("#testImg").height(),$("#testImg").width())
if ($("#testImg").height() != 1018) return layer.msg('图片规格不符合要求');
if ($("#testImg").width() != 764) return layer.msg('图片规格不符合要求');
} else {
if ($("#testImg").width() != 382) return layer.msg('图片规格不符合要求');
}
$("#viewImg"+num+"").attr('src', showPicture)
}, 500)
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -202,7 +202,11 @@
data.status = status;
promiseMethods('/goblin/marketing/zhengzai/status', 'post', data).then(res => {
if (res.code == 0) {
if (type == 3) {
layer.msg('删除成功!')
} else {
layer.msg('修改状态成功!')
}
setTimeout(() => {
$("#searchBtns").click();
}, 500);
......
......@@ -282,10 +282,14 @@
let data = []; // 新增集合
let data2 = []; // 修改集合
let domData = $(".activityStore_item");
let flag = false;
Array.prototype.forEach.call(domData,function(item,index){
obj['marketId'] = marketId;
obj['showTime'] = item.querySelector('.timeSp').value;
obj['storeId'] = item.querySelector('.storeList').getAttribute('data-id');
if (!item.querySelector('.timeSp').value || !item.querySelector('.storeList').getAttribute('data-id')) {
flag = true;
}
obj['delTag'] = 0;
if (item.getAttribute('data-newTag')) {
obj['newTag'] = 1;
......@@ -300,8 +304,18 @@
// }
})
if (flag) {
layer.msg('请将选项填写完整!')
flag = false
return
}
promiseMethods('/goblin/marketing/zhengzai/store','post', JSON.stringify(data), 'application/json').then(res => {
if (res.code == 0) {
$.operate.successCallback(res);
} else {
layer.msg(res.message)
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -121,7 +121,7 @@
align: 'center'
},
{
field: 'bindType',
field: 'priceMarketing',
// title: `线下售价<a onclick="setPrice(1)">批量</a>`,
title: `线下售价`,
width: '150',
......@@ -132,17 +132,23 @@
// title: '库存限量<a onclick="setPrice(2)">批量</a>',
title: '库存限量',
width: '150',
align: 'center'
align: 'center',
formatter: function (value, row, index) {
let str = '';
if (value == 0) {
str = '无限量';
} else {
str = value;
}
return str
}
},
{
field: 'buyRoster',
// title: '用户限购<a onclick="setPrice(3)">批量</a>',
title: '用户限购',
width: '150',
align: 'center',
formatter: function (value, row) {
}
align: 'center'
},
{
title: '购买条件',
......
......@@ -4,8 +4,10 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.consumer.goblin.dto.PhoneDto;
import com.liquidnet.service.consumer.goblin.service.IBaseDao;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,14 +17,20 @@ import org.springframework.data.redis.stream.StreamListener;
import java.io.InputStream;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.LinkedList;
@Slf4j
public abstract class AbstractXlsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
private IBaseDao baseDao;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisUtil redisUtil;
private static final String SQL_INSERT_GOODS_BUY_ROSTER_LOG = "INSERT INTO goblin_goods_buy_roster_log (sku_id,buy_roster,buy_roster_type,parsing_result,created_at)VALUES(?,?,?,?,?)";
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.debug("CONSUMER XLS [streamKey:{},messageId:{},stream:{},body:{}]",
......@@ -45,30 +53,40 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String,
}
private boolean consumerSqlDaoHandler(String xlsPath, Integer type, String skuId) {
LinkedList<Object[]> objs = CollectionUtil.linkedListObjectArr();
Boolean aBoolean = false;
try {
URL url = new URL(xlsPath);
InputStream is = url.openStream();
EasyExcel.read(is, PhoneDto.class, new PageReadListener<PhoneDto>(dataList -> {
for (PhoneDto data : dataList) {
if(data.getMobile()==null){
if (data.getMobile() == null) {
continue;
}
String redisKey = GoblinRedisConst.REDIS_CAN_BUY.concat(skuId + ":").concat(data.getMobile());
if (type.equals(1)) {//添加
if (log.isDebugEnabled()) {
log.debug("添加 读取到一条数据{}", JSON.toJSONString(data));
}
redisUtil.set(redisKey, 0);
} else {
if (log.isDebugEnabled()) {
log.debug("删除 读取到一条数据{}", JSON.toJSONString(data));
}
redisUtil.del(redisKey);
}
}
})).sheet().doRead();
objs.add(new Object[]{skuId, xlsPath, type, 1, LocalDateTime.now()});
} catch (Exception e) {
objs.add(new Object[]{skuId, xlsPath, type, 2, LocalDateTime.now()});
aBoolean = false;
log.error("CONSUMER XLS FAIL ==> {}", e.getMessage(), e);
e.printStackTrace();
} finally {
try {
baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
} catch (Exception e) {
}
// if (!aBoolean) {
// HashMap<String, String> map = CollectionUtil.mapStringString();
// map.put("message", xlsPath);
......
......@@ -158,7 +158,7 @@ public class PayChannelStrategyAlipayImpl extends AbstractPayChannelStrategyImpl
|| AlipayConstant.AlipayTradeStateEnum.TRADE_FINISHED.getCode().equals(resultMap.get("tradeStatus"))) {
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
if(ordersDto.getPaymentType().equals(DragonConstant.PayTypeEnum.PAYMENT_TYPE_MICROPAY_ALIPAY.getCode())){
this.completeSuccessOrder(ordersDto, resultMap.get("trade_no").toString(), LocalDateTime.now(), resultMap.toString());
this.completeSuccessOrder(ordersDto, resultMap.get("tradeNo").toString(), LocalDateTime.now(), resultMap.toString());
}
}else{
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAY_FAIL.getCode()));
......
......@@ -111,7 +111,8 @@ public class WepayStrategyMicropayImpl extends AbstractWepayStrategy {
}
// 当trade_state为SUCCESS时才返回result_code
if ("SUCCESS".equals(resultMap.get("trade_state"))) {
if(PayWepayUtils.getInstance().notifySign(resultMap, resultMap.get("sign"))){
String sign = resultMap.remove("sign");
if(PayWepayUtils.getInstance().notifySign(resultMap, sign)){
// 修改订单状态等。
payChannelStrategyWepay.completeSuccessOrder(dragonOrdersDto,resultMap.get("transaction_id"), LocalDateTime.now(),resultMap.toString());
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
......
......@@ -55,11 +55,12 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
if(StringUtil.isEmpty(ordersDto)){
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getCode(),DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getMessage());
}
//如果已支付 直接返回结果
if(!ordersDto.getStatus().toString().equals(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode())){
//如果已支付 直接返回结果 // MICROPAYWEPAY MICROPAYALIPAY
if(!ordersDto.getStatus().toString().equals(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode())&&!ordersDto.getPaymentType().equals("MICROPAYALIPAY")&&!ordersDto.getPaymentType().equals("MICROPAYWEPAY")){
return dragonPayBiz.buildPayOrderQueryRespDto(ordersDto);
}
//如果未支付进行三方查询
//如果未支付进行三方查询`
String payType = DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getPayType();
return payChannelStrategyContext.getStrategy(payType).checkOrderStatus(code);
}
......
......@@ -2,6 +2,7 @@ package com.liquidnet.service.dragon.utils;
import com.alipay.api.internal.util.file.IOUtils;
import com.liquidnet.commons.lang.util.MD5Utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
......@@ -265,8 +266,13 @@ public class PayWepayUtils {
SortedMap<String, Object> smap = new TreeMap<String, Object>(map);
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, Object> m : smap.entrySet()) {
if(null!=m.getValue()){
if(StringUtils.isNotBlank(m.getValue().toString())){
sb.append(m.getKey()).append("=").append(m.getValue()).append("&");
}
}
}
sb.delete(sb.length() - 1, sb.length());
return sb.toString();
}
......
......@@ -368,6 +368,19 @@ create table goblin_goods_sku
create index idx_ggs_spu_id on goblin_goods_sku (spu_id);
create index idx_ggs_store_id on goblin_goods_sku (store_id);
# -- >>------------------------------------------------------------------------------------
drop table if exists goblin_goods_buy_roster_log;
create table goblin_goods_buy_roster_log
(
mid bigint auto_increment primary key,
sku_id varchar(64) not null comment '对应 goblin_goods_sku.sku_id',
buy_roster varchar(30) not null comment '限购名单',
buy_roster_type tinyint null comment '删除标记[1-添加|2-删除]',
parsing_result varchar(30) null comment '解析结果[1-成功|2-失败]',
operator varchar(64) null,
created_at datetime not null,
comment varchar(255)
) engine = InnoDB comment '商品限购名单处理记录';
# -- >>------------------------------------------------------------------------------------
drop table if exists goblin_goods_spu_spec_value;
create table goblin_goods_spu_spec_value
(
......
......@@ -126,8 +126,8 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
int skuSize = goodsSkuInfoVoList.size();
for (int i = 0; i < skuSize; i++) {
GoblinGoodsSkuInfoVo skuInfoVo = goodsSkuInfoVoList.get(i);
String skuId = skuInfoVo.getSkuId();
String buyRoster = skuInfoVo.getBuyRoster();
goblinRedisUtils.setSkuStock(null, skuId, skuInfoVo.getSkuStock());
......@@ -135,7 +135,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
skuId, skuInfoVo.getSpuId(), skuInfoVo.getSkuNo(), skuInfoVo.getName(), skuInfoVo.getSubtitle(),
skuInfoVo.getSellPrice(), skuInfoVo.getSkuPic(), skuInfoVo.getSkuIsbn(), skuInfoVo.getStock(), skuInfoVo.getSkuStock(),
skuInfoVo.getWarningStock(), skuInfoVo.getPrice(), skuInfoVo.getPriceMember(), skuInfoVo.getWeight(), skuInfoVo.getBuyFactor(),
skuInfoVo.getBuyRoster(), skuInfoVo.getBuyLimit(), skuInfoVo.getStoreId(), skuInfoVo.getSkuValidity(), skuInfoVo.getVirtualFlg(),
buyRoster, skuInfoVo.getBuyLimit(), skuInfoVo.getStoreId(), skuInfoVo.getSkuValidity(), skuInfoVo.getVirtualFlg(),
skuInfoVo.getStatus(), skuInfoVo.getShelvesStatus(), skuInfoVo.getSkuAppear(), skuInfoVo.getShelvesAt(), createdBy,
createdAt, skuInfoVo.getLogisticsTemplate()
});
......@@ -143,6 +143,9 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
skuInfoVo.getSkuSpecList().forEach(skuSpecDto -> initGoodsSkuSpecValueObjs.add(new Object[]{
spuId, skuId, skuSpecDto.getSpecName(), skuSpecDto.getSpecVname()
}));
if (skuInfoVo.getBuyFactor().equals("2") && StringUtils.isNotBlank(buyRoster) && buyRoster.startsWith("http")) {
queueUtils.sendMsgByRedisXls(buyRoster, "1", skuId);
}
}
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
......@@ -158,14 +161,6 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
goodsInfoVo.getLogisticsTemplate()
});
toMqSqls.add(SqlMapping.get("goblin_goods_sku.insert"));
// goodsSkuInfoVoList.forEach(skuInfoVo -> initGoodsSkuObjs.add(new Object[]{
// skuInfoVo.getSkuId(), skuInfoVo.getSpuId(), skuInfoVo.getSkuNo(), skuInfoVo.getName(), skuInfoVo.getSubtitle(),
// skuInfoVo.getSellPrice(), skuInfoVo.getSkuPic(), skuInfoVo.getSkuIsbn(), skuInfoVo.getStock(), skuInfoVo.getSkuStock(),
// skuInfoVo.getWarningStock(), skuInfoVo.getPrice(), skuInfoVo.getPriceMember(), skuInfoVo.getWeight(), skuInfoVo.getBuyFactor(),
// skuInfoVo.getBuyRoster(), skuInfoVo.getBuyLimit(), skuInfoVo.getStoreId(), skuInfoVo.getSkuValidity(), skuInfoVo.getVirtualFlg(),
// skuInfoVo.getStatus(), skuInfoVo.getShelvesStatus(), skuInfoVo.getSkuAppear(), skuInfoVo.getShelvesAt(), skuInfoVo.getCreatedBy(),
// skuInfoVo.getCreatedAt(), skuInfoVo.getLogisticsTemplate()
// }));
toMqSqls.add(SqlMapping.get("goblin_goods_image.insert"));
LinkedList<Object[]> initGoodsImageObjs = CollectionUtil.linkedListObjectArr();
if (CollectionUtils.isEmpty(goodsInfoVo.getImageList())) {
......@@ -208,11 +203,6 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
initGoodsTagObjs, initGoodsServiceSupportObjs, initGoodsSpecObjs, initGoodsSpecValueObjs,
initGoodsSpuSpecValueObjs, initGoodsSkuSpecValueObjs, initGoodsCategorySpecObjs)
);
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
// SqlMapping.gets(toMqSqls, initGoodsObjs, initGoodsSkuObjs, initGoodsImageObjs,
// initGoodsTagObjs, initGoodsServiceSupportObjs)
// );
}
@Override
......@@ -535,6 +525,10 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
updateGoodsObjs.add(new Object[]{priceGe, priceLe, uid, now, spuId});
}
String buyRoster = storeMgtGoodsEditSkuParam.getBuyRoster();
if (storeMgtGoodsEditSkuParam.getBuyFactor().equals("2") && StringUtils.isNotBlank(buyRoster) && buyRoster.startsWith("http")) {
queueUtils.sendMsgByRedisXls(buyRoster, storeMgtGoodsEditSkuParam.getBuyRosterType(), skuId);
}
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_for_market"));
......
......@@ -460,11 +460,11 @@ public class GoblinMongoUtils {
.set("shelvesTime", vo.getShelvesTime())
.set("spuValidity", vo.getSpuValidity())
.set("virtualFlg", vo.getVirtualFlg())
.set("imageList", vo.getImageList())
.set("imageList", mongoConverter.convertToMongoType(vo.getImageList()))
.set("logisticsTemplate", vo.getLogisticsTemplate())
.set("tagVoList", vo.getTagVoList())
.set("extagVoList", vo.getExtagVoList())
.set("serviceSupportVoList", vo.getServiceSupportVoList())
.set("tagVoList", mongoConverter.convertToMongoType(vo.getTagVoList()))
.set("extagVoList", mongoConverter.convertToMongoType(vo.getExtagVoList()))
.set("serviceSupportVoList", mongoConverter.convertToMongoType(vo.getServiceSupportVoList()))
.set("updatedBy", vo.getUpdatedBy())
.set("updatedAt", vo.getUpdatedAt())
.getUpdateObject()
......@@ -553,7 +553,7 @@ public class GoblinMongoUtils {
Query.query(Criteria.where("skuId").in(skuIds).and("delFlg").is("0")).getQueryObject(),
Update.update("name", vo.getName())
.set("skuPic", vo.getSkuPic())
.set("skuSpecList", vo.getSkuSpecList())
.set("skuSpecList", mongoConverter.convertToMongoType(vo.getSkuSpecList()))
.set("sellPrice", vo.getSellPrice())
// .set("price", vo.getPrice())
// .set("priceMember", vo.getPriceMember())
......
......@@ -48,7 +48,7 @@ public class QueueUtils {
* @param skuId skuId
*/
public void sendMsgByRedisXls(String xlsPath, String type, String skuId) {
if (xlsPath.equals("") || xlsPath == null || type.equals("") || type == null || skuId.equals("") || skuId == null) {
if (xlsPath == null || xlsPath.equals("") || type == null || type.equals("") || skuId == null || skuId.equals("")) {
} else {
HashMap<String, String> map = CollectionUtil.mapStringString();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment