在中國程式媛中,他們的代碼有什麼樣的魅力,Aone聯合雲栖社群、餓了麼、釘釘、阿裡雲、天貓、口碑發起首屆程式媛比碼活動——不秀大長腿,秀高智商;不秀美圖照,秀代碼圖,參與曬碼互動遊戲赢“83行代碼”T恤!
我們來說說這群女工程師的第83行代碼及代碼背後的故事:
我是 阿裡口碑 基礎平台技術部的工程師-銜遠,坐标上海。
聽說還有發照騙,說好的不秀美顔呢!!
ps:團隊大量招人,歡迎加入~~ [email protected]
下面是一段商品購買時庫存扣減回補的代碼,歡迎cr
public class PurchaseProcessExecutorImpl implements PurchaseProcessExecutor {
/**
* 外部庫存服務
*/
private OutInventoryService outInventoryService;
/**
* 執行外部扣減流程,同時更新扣減狀态
*
* @param bizOrder
* @return
*/
@Override
public void executeSubtract(InventoryOrder bizOrder, String uid) {
List<SubtractProcessDetail> details = bizOrder.getSubtractProcess();
//生成外部預算請求,key是outInvId
List<OutInventoryControlRequest> outReqs = convert2OutInvReqs(details);
//通過budgetCore進行扣減
Map<String, BudgetControlResult> res = budgetCoreControl(outReqs, uid, ControlType.SUBTRACT);
//更新扣減單元狀态
updateUnitStatus(res, details);
//更新子單扣減狀态
updateOrderStatus(details);
//更新主單狀态
bizOrder.updateSubtractStatus();
}
/**
* 執行回補流程,同時更新回補狀态
* @param subtractOrder
* @param rollbackOrder
* @param uid
*/
@Override
public void executeRollback(InventoryOrder subtractOrder, InventoryOrder rollbackOrder,
String uid) {
//生成外部預算請求
List<OutInventoryControlRequest> outReqs = convert2OutInvReqs(
rollbackOrder.getRollbackProcess());
//通過budgetCore進行回補
Map<String, BudgetControlResult> res = budgetCoreControl(outReqs, uid, ControlType.ROLLBACK);
//更新回補單元狀态
updateUnitStatus(res, rollbackOrder.getRollbackProcess());
//更新子單狀态
updateOrderStatus(rollbackOrder.getRollbackProcess());
//更新主單狀态
rollbackOrder.updateRollbackStatus();
}
/**
* 更新扣減單元狀态
*
* @param res
* @param details
*/
private <T extends PurchaseProcessDetail> void updateUnitStatus(Map<String, BudgetControlResult> res,
List<T> details) {
if (CollectionTool.isEmpty(details)) {
return;
}
//結果解析
details.forEach(detail -> {
//根據扣減結果更新狀态
detail.getUnits()
.forEach(unit -> unit.updateUnitStatus(res.get(unit.getOutInventoryId())));
});
}
/**
* 更新子單明細狀态
* @param details
* @param <T>
*/
private <T extends PurchaseProcessDetail> void updateOrderStatus(List<T> details) {
if (CollectionTool.isEmpty(details)) {
return;
}
details.forEach(detail -> detail.updateStatus());
}
/**
* 通過budgetCore進行回補 or 扣減
*
* @param outReqs
* @param uid
*/
private Map<String, BudgetControlResult> budgetCoreControl(List<OutInventoryControlRequest> outReqs,
String uid,
ControlType controlType) {
Map<String, BudgetControlResult> budgetControlResultMap = new HashMap<>();
if (CollectionTool.isEmpty(outReqs)) {
return budgetControlResultMap;
}
//根據類型調用bc進行回補or扣減
if (ControlType.SUBTRACT == controlType) {
//扣減
budgetControlResultMap = outInventoryService.batchSubtract(uid, outReqs);
} else if (ControlType.ROLLBACK == controlType) {
//回補
budgetControlResultMap = outInventoryService.batchRollback(uid, outReqs);
} else {
InvBizLog.procWarn(InvBizType.INV_SUBTRACT, InvSecErrorCode.BC_NOT_SUPPORT, "bc控制模式不支援",
controlType);
}
if (CollectionTool.isEmpty(budgetControlResultMap)) {
InvBizLog.fail(InvBizType.INV_SUBTRACT, InvSecErrorCode.LOAD_BUD_CORE_RESULT_NULL,
"budgetCore調用失敗");
throw new InvBusinessException(InvSecErrorCode.LOAD_BUD_CORE_RESULT_NULL, true);
}
InvBizLog.proc(InvBizType.INV_SUBTRACT, "budgetCore調用結束,結果={0}", budgetControlResultMap);
return budgetControlResultMap;
}
}
與銜遠小姐姐互動,為她打call——> 點選進去銜遠曬碼
更多小姐姐,點選進入檢視代碼
有被代碼耽誤的釘釘吃貨程式媛,寫代碼寫到忘記吃飯的——采霜
她急需能把她從代碼中叫醒去吃飯的小夥伴,趕緊勾搭;
http://yq.aliyun.com/roundtable/126499/answer/170319#visit170319有以代碼為樂的餓了麼大前端打(bei)雜(guo)工程師——敖天羽
http://yq.aliyun.com/roundtable/126499/answer/170299#visit170299還有全棧美女工程師——前端後端一鍋端的——墨瑜女神
http://yq.aliyun.com/roundtable/126499/answer/170316#visit170316還有阿裡雲活好碼贊,像男人一樣活着的技術專家小姐姐——清宵
http://yq.aliyun.com/roundtable/126499/answer/170296#visit170296和天貓Java程式媛,happy(被)來(逼)的——采月
http://yq.aliyun.com/roundtable/126499/answer/170354#visit170354阿裡口碑 搜尋推薦組的JAVA女工程師——妍霏
http://yq.aliyun.com/roundtable/126499/answer/214059#visit214059阿裡口碑基礎平台技術部的工程師-銜遠,一個技術與馬甲線并存的mm
http://yq.aliyun.com/roundtable/126499/answer/248798#visit248798雲栖社群聚能聊專家,具有知性溫婉氣質的——海洋的雲
http://yq.aliyun.com/roundtable/126499/answer/170290#visit170290福州市五佰網絡科技有限公司的Java女工程師——江小白太白
http://yq.aliyun.com/roundtable/126499/answer/189332#visit189332在下*的程式媛——cn_suqingnian
http://yq.aliyun.com/roundtable/126499/answer/170309#visit170309交通銀行的前端女工程師——昆0830
http://yq.aliyun.com/roundtable/126499/answer/201979#visit201979