需求:
批量匯入商品的;是用zip包的形式;
如下**是上傳zip的業務**,我們在別處呼叫的話直接去呼叫productbatchuploadmanager.productbatchuploadquickly(multipartfile multipartfile)
即可;
productuploadquickly(multipartfile multipartfile)
方法中分好幾步去執行上傳解析zip中的:
uziputils.readzipcontentbyfilemutifile(multipartfile)
去解析zip包,並將該包解析完成的內容放在伺服器的某乙個地方;
checkbatchupload()
對解壓完成的內容進行校驗,因為你在校驗完畢之前是不能對該內容進行上傳或者資料庫操作的,所以這一步必須進行業務操作之前進行校驗;
productbatchupload();
對解壓完成的內容進行上傳以及資料庫操作;
deletebatchupload(uziputils.out_put_directory);
刪除在解析完成後存放在伺服器的臨時檔案
/**
* @author:朱國慶
* @date:2020/7/29 10:33
* @desription: qidian-server-distribution
* @version: 1.0
*/@service
public
class
productbatchuploadmanagerimpl
implements
productbatchuploadmanager
catch
(numberformatexception e)
//去資料庫中查詢,如果spuid不存在,那麼就丟擲異常
queryprodspudobyid
(spunameid);if
(objects.
isnull
(prodspudo)
) file[
] files = filedirectory.
listfiles()
;//該集合用來收集主圖
arraylist
filemain =
newarraylist
<
>()
;for
(file filetooss : files)
if(filetooss.
isfile()
)if(spufilename.
contains
(spuname)
)catch
(exception e)
}catch
(numberformatexception e)
filemain.
add(filetooss);}
else
catch
(numberformatexception e)
queryprodskudobyskuid
(spufilenameid);if
(objects.
isnull
(prodskudo))}
}}if(filemain.
size()
>8)
}}}@override
@transactional
public
void
productbatchupload()
if(filetooss.
isfile()
)else}}
}}}}
}@override
public
void
deletebatchupload
(string path)
else
else
file.
delete()
;}}}
@override
public
synchronized
void
productbatchuploadquickly
(multipartfile multipartfile)
catch
(exception e)
checkbatchupload()
;productbatchupload()
;}catch
(runtimeexception e)
finally
}}
下面**是zip解析工具類
/**
* @author:朱國慶
* @date:2020/7/28 12:27
* @desription: qidian-server-distribution
* @version: 1.0
*/@component
public
class
uziputils
}else
out.
close()
; out = null;
doc = null;
}catch
(exception ex)}}
zipis.
close()
;}catch
(ioexception ioex)
system.out.
println
("finished!");
}public
void
readzipcontentbyfilemutifile
(multipartfile multipartfile)
throws exception
}
回溯的一些思考
堆疊中有元素abcdef,每次出棧可以選擇乙個或者兩個元素棧,當有兩個元素出棧時可以選擇其中乙個重新入棧,當棧為空時,總共有多少種出棧方法?對於本題目的一些思考,對於回溯問題,要記得恢復現場。include include include using namespace std queue vect...
生活的一些思考
這裡只是生活中一些零碎的想法,隨時都有可能飄散而去,在此也只是記錄一下,寫到 算 並無主題。生活,這個凌駕於生存而上的活著。對我來說,這個詞,或許只是心靈上的企及。生存,這個滿足於人的最低基本需求的定義,食能果腹,衣能蔽體,也僅此而已吧。而,在生存之上,我們才會考慮,如何食的更有品味,如何穿的更得體...
索引的一些思考
一 索引是什麼?答 索引是一種資料結構,它和表中的列有對應關係,索引是有序的,但資料的物理排序不一定是按照索引的順序排列的。如果是按照索引排序的,則稱為聚集索引 如果不是,則稱之為非聚集索引。由於聚集索引會影響到資料的物理排序,所以每個表只能有乙個聚集索引,但可以有多個非聚集索引。例子解釋 1 cr...