模型代码
AccountDO增加isCanceled(),isFreezed(),isOpened(),isUnApplied(),isIn(...)方法,太多的地方需要判断这些。
levit应用service代码
AcFreezeService
1. public
DataList<AcFreezeDO> queryBySearchParam(AcFreezeSearchParam acFreezeSearchParam, int
pageSize, int
pageNo);
业务查询,被FreezeDetailAction依赖。
2. public
boolean
hasFinishedAlipayTrade(String
sellerMemberId);
判断是否有14天内完成的支付宝交易。这个是退出诚保的前置判断,不应该放在冻结服务类。
3. public
DataList<AcFreezeDO> findByTradeNo(String
tradeNo, TradeType tradeType);
提供搞一个查询服务类
4. public
DataList<AcFreezeDO> fetchFreezedAndFreezeForeverRecords(String
memberId, int
size);
提供一个查询服务类
5. public
DataList<AcFreezeDO> findForAutoUnfreeze(int
pageNo, int
pageSize, Date nowDate, Long
lastId);
AutoUnfreezeTradeJob依赖,提供一个查询服务。
6. public
DataList<AcFreezeDO> fetchFreezeRecordsByMemberIdAndStatus(String
memberId, String
[] fundStatus, int
pageNo,
int
pageSize);
CreditDataService.fetchAcFeezeRecordsByMemberIdAndStatus依赖,提供一个查询服务。
7. public
boolean
isMoneyFreezed(String
tradeNo, TradeType tradeType, String
buyerMemberId);
只有GuaranteeCommonService.isValidGuarantee一个方法依赖,是否有必要提供如此灵活的参数?
8. public
int
update(AcFreezeDO acFreezeDO);
只是对dao的简单包装。需要重构。
9. public
int
updateAgreedUnfreezeDateAndState(String
tradeNo, TradeType tradeType, Date newAgreedUnfreezeDate,
AcFreezeState state);
没有地方用到,删。
10. public
int
updateAgreedUnfreezeDate(String
tradeNo, TradeType tradeType, Date date);
只是对dao的简单包装。ContractDelayAction.delayFreezeDatetime依赖,这个Action做的事情太多。
11. public
int
updateAgreedUnfreezeDate(String
tradeNo, TradeType tradeType, Date date);
只是对dao的简单包装,永久冻结不可能只是这么简单吧。InComplaintNotifyService依赖。
12. public
String
freezeMoneyByContract(ContractDO contractDO, String
vAccountId, String
operatorId);
买家确认合同调用此方法。ContractService.confirmContractByBuyer。
13. public
Integer
countFreezeRecordsByMemberIdAndStatus(String
memberId, String
[] fundStatus);
提供给CreditDataService用于统计,提供一个查询服务。
14. public
boolean
freezeMoneyByOrderHasComplain(Money freezeMoney, String
tradeNo, TradeType tradeType,
String
operatorId);
提供给InComplaintNotifyService使用。
15. public
void freezeMoneyByOrder(String
buyerMemberId, String
sellerMemberId, Long
orderId, String
tradeType);
提供给支付宝交易确认收货后冻结保障金。
AccountService
1. public
int
updateOrderId(String
orderId, Long
id);
无业务,简单的dao封装,OrderIdServiceImpl依赖
2. public
DataList<AccountDO> queryOrderId(Date startTime);
提供查询服务
3. public
Long
insertAccountDO(AccountDO accountDO);
只有单元测试永达,删。
4. public
int
updateAccountDOByConditionOfId(AccountDO account);
提供给InterCreditLifecycleServiceImpl,InterCreditLifecycleServiceImpl的用意不是很清楚。
5. public
AccountDO queryAccountDOByVid(String
vid);
应该有服务类提供了,需要阿炳确认。
6. public
AccountDO getAccountDOByMemberId(String
memberId);
同上
7. public
List<AccountDO> queryAccountDOListByMemberIds(String
[] memberIds);
同上
8. public
List<AccountDO> queryListByMemberIdsAndCreditStatus(List<String
> memberIds, String
creditStatus);
提供给AutoSyncCleanUpStatusJob,对已经被清退的用户做账户状态检查,提供一个非核心查询。
9. public
DataList<AccountDO> queryForAutoExitCredit(Date gmtClaimsRem, Date gmtIpRem, int
pageSize, Long
lastId);
提供给AutoExitCreditServiceJob,自动关闭诚信保障。提供一个非核心查询,lastId没有用。
10. public
boolean
isCreditOpened(String
memberId);
这个阿炳应该新提供了封装。
11. public
int
updateAcountAllowNullProperty(AccountDO accountDO);
依赖很多:
a. CreditNotifyService.claimCompleteNotify 很复杂的一个类。
b. ClaimNotifyByMailService.paymentNotifySeller.发送赔付通知。发送邮件就好好发吧,干嘛来修改account表啊?
c. TpDisableServiceImpl.recover
d. AccountMoneyChange.remoteAccountChange
12. public
AccountDO find(Long
accountId);
应该有服务类提供了,需要阿炳确认。
13. public
int
updateShouldDownMoney(AccountDO accountDO);
只是对dao的简单封装。
依赖:CreditAdjustmentProccessService,AccountMoneyChangeImp
14. public
int
updateCommonCreditMoney(AccountDO accountDO);
只是对dao的简单封装。依赖:CreditAdjustmentProccessServiceImpl
15. public
boolean
checkTimeBeforeExitCreditService(String
memberId);
退出诚保服务的前置条件,封装成一个规则业务类。
16. public
AccountDO findNewestAccount();
简单的dao封装,AutoCheckAccountItemAndMoneyJob的内部实现,直接访问DAO吧。
17. public
boolean
hasClaimOrder(String
memberId);
简单的dao封装,提供给CRM外部接口。
18. public
int
updateById(AccountDO accountDO, Long
id);
简单的dao封装,只有SyncVidServiceImpl依赖。
RemindService
贸易通提醒业务service,不用重构
GroupRecruitService
团招募业务service,不用重构
CreditDataService
提供给诚信档案服务使用的业务service,不用重构
ClaimNotifyByMailService(优先级低)
三个方法均被PayForComplaintService依赖,处理赔付的逻辑。职责太多,不只是单纯的发送邮件
CleanUpService
清退Service,比较独立,不用重构
ContractAttachService
提供给ContractService的业务service,不用重构
CreditDataAnalysisService
诚信档案访问量分析业务service,不用重构
SyncVidService
AutoSyncVidJob的业务service,不用重构,但是可以移到daemon里面。
public
void setUdbPersonService(final
UDBPersonService udbPersonService);
此注入方法应该可以删掉
TempContractService
非核心业务,重构优先级低,ContractAction太复杂。
TpDisableService
GuaranteeTpDisableObserver的业务service,不用重构,但是可以移到daemon里面。
UploadService
合同上传业务service,不用重构
ContractService
1. public
ContractDO getContractSafely(long
id, String
loginId);
此方法可以删掉,可以在ContractDO提供这个方法。
2. public
ContractDO getContract(long
id);
提供一个查询服务类。
3. public
ContractDO getBuyerContractById(long
id, String
buyerMemberId);
此方法可以删掉,可以在ContractDO提供这个方法。
4. public
ContractDO getSellerContract(ContractDO contractDO, String
sellerMemberId);
提供一个查询服务类。
5. public
DataList<ContractDO> queryContractByKw(QueryParam<ContractParam> queryParam);
提供一个查询服务类。
6. public
int
updateContractBySeller(ContractDO dataObject, String
loginId);
只有单元测试用到
7. public
int
updateContractStatusByBuyer(long
id, String
loginId, int
contractVersion, String
contractStatus);
只有单元测试用到
8. public
int
extendContractUnfreezeTime(long
id, int
day, String
loginId);
只有单元测试用到
9. public
long
createContractAndSendWW(ContractDO contractDO);
被ContractConfirmAction.confirmTempContract依赖到,业务方法。
10. public
long
createElecContract(ContractDO contractDO, List<GoodsDO> goodsList);
被InitContractAction依赖到,业务方法
11. public
ContractWithDetailVO getContractDetail(ContractDO contractDO, String
loginId, boolean
isBuyer);
业务查询,提供查询业务类.
12. public
String
updateContractAndGoods(ContractWithDetailVO contractWithDetailVO, String
loginId);
业务操作更新合同,不用重构
13. public
String
updateContractAndAttach(ContractWithDetailVO contractWithDetailVO, String
attachUrl, String
loginId);
业务操作更新合同,不用重构
14. public
ReceiveAddressDO initContract(String
buyerId, String
loginId);
只有单元测试用到
15. public
boolean
confirmContractByBuyer(long
contractId, String
buyerMemberId, int
contractVersion);
买家确认合同业务类,可以把确认合同部分代码抽取到合同服务类。
16. public
int
autoCloseContract(ContractDO contractDO);
只有单元测试用到。
17. public
int
updateContract(ContractDO contractDO);
只被 ContractDelayAction.delayFreezeDatetime用到,可以考虑合并或者重构。
18. public
String
getBusinessRole(String
contactNo, String
memberId);
提供一个查询服务类。
19. public
boolean
isContractNoValid(String
contractNo);
提供一个查询服务类。
20. public
boolean
isHasGuarantee(String
contractNo);
只有单元测试用到。
21. public
boolean
updateComplaintStatus(ContractDO contract);
只是简单的dao封装,InterContractServiceImpl依赖,可以直接访问dao.
22. public
String
getContractSellerId(String
contractNo);
只有单元测试用到。
23. public
int
closeContractByContractNoArray(String
[] contractNoArray);
业务方法。
24. public
int
closeContractByContractNoList(List<String
> contractNoList);
被任务AutoUnfreezeTradeJob依赖,可以移到任务。
25. public
int
closeContractByContractNo(String
contractNo);
被PayForComplaintServiceImpl依赖。
26. public
ContractDO getContractByNO(String
contractNo);
提供一个查询服务类。
27. public
GoodsDO getPreGoods(long
offerId);
只有单元测试用到
28. public
ExternalMiddleOfferModel getOffer(long
offerId);
被ContractUtil依赖,用于页面显示。
29. public
ContractDO getInitContract(String
sellerMemberId, String
buyerMemberId);
被InitContractAction依赖,用于页面显示。
30. public
boolean
closeContract(ContractDO contractDO, String
buyerMemberId);
可以抽取到合同核心服务。
31. boolean
updateVersion(long
contractId, int
version);
只是对dao的简单封装,直接使用dao
32. public
Map<String
, Integer
> getValidContract(String
[] memberList);
只有单元测试用到。
33. public
int
updateGoodsIdById(long
tempContractId, long
contractId);
只是简单的dao封装,无业务。
34. public
List<GoodsDO> getGoodsListByContractId(long
contractId);
提供一个查询服务类。最好ContractDO里面可以包含List<GoodsDO>。
35. public
boolean
createAttachContract(ContractDO contractDO, String
attachURL);
提供一个附件业务service.
36. public
String
congfigExpireDate();
这个是一个util方法。
37. public
boolean
hasNotClosedContract(String
memberId);
提供给CRM的接口实现。
38. public
int
sendWWAfterDestoryContract(ContractDO contractDO, String
memberType);
业务方法,取消合同发送旺旺消息。
CreditStatusService
这个类直接废弃掉吧,阿炳应该有封装。
AcLogService(credit也有同样的service)
1. public
void insertAcLogDO(AcLogDO acLogDO);
只有addAcLog用到,但是addAcLog只被test用到。
2. public
boolean
addAcLog(String
memberId, Money overallBalance, int
actionType);
addAcLog只被test用到。
AcSyncService(credit也有同样的service)
1. public
DataList<AcSyncDO> queryAcSyncDOListByConditions(AcSyncDO acSyncDO);
只被CreditNotifyServiceImpl依赖 *CreditNotifyServiceImpl是提供给CRM的接口*
2. public
Long
insertAcSync(AcSyncDO acSyncDO);
只是简单的对dao的封装,被BaseAcFreezeService.saveAcSync依赖,可以直接使用acSyncDAO.create
3. public
int
updateClaimsStatusByGuid(AcSyncDO acSyncDO);
只是简单的对dao的封装,被CreditNotifyServiceImpl依赖,可以直接使用acSyncDAO.updateClaimsStatusByGuid
4. public
AcSyncDO findAcSyncById(String
vid, String
guid);
TransferMoneyAction依赖到,提供一个查询服务,注释是错误的!guid不是主键!
5. public
AcSyncDO findNewestSyncTradeInfo();
AutoCheckAccountItemAndMoneyJob的内部实现,直接访问dao吧。
PayForComplaintService
InterCreditLifecycleService(优先级低)
close方法有一些解冻的逻辑。
credit应用service代码
AcFreezeService
1. public
DataList<AcFreezeDO> queryAcFreezeByKW(Map<String
, Object
> map);
重构成一个find服务类。
2. public
AcFreezeDO find(Long
id);
重构成一个find服务类。
3. public
int
updateAgreedUnfreezeDate(String
tradeNo, TradeType tradeType, Date date);
直接放在合同服务类。合同才会延长冻结时间。
4. public
int
updateAgreedUnfreezeDate(List<String
> tradeNoList, TradeType tradeType, Date date);
重载方法,删。
5. public
int
updateBatchByTradeNo(Map<String
, Object
> map);
重载方法,删。
6. public
int
updateStateToUnFreeze(String
tradeNo, TradeType tradeType);
没有用到,删。
7. public
int
updateStateToUnFreeze(List<String
> tradeNoList, TradeType tradeType);
没有用到,删。
8. public
int
updateState(List<String
> tradeNoList, TradeType tradeType, AcFreezeState state);
没有用到,删。
9. public
int
updateForAutoUnfreeze(List<String
> idList);
没有用到,删。
10. public
boolean
unFreezeMoney(List<AcFreezeDO> acFreezeDoList, String
operatorId)
可以删掉,直接调用AcUnfreezeService.unfreezeMoney()
11. public
DataList<AcFreezeDO> findRepeatAcfreeze();
这个应该可以用formbuilder实现吧。
AcLogService
1. public
void insertAcLogDO(AcLogDO acLogDO);
不必要暴漏出来的代码,删。
2. public
boolean
addAcLog(String
memberId, Money overallBalance, int
actionType);
只被单元测试用到,删。
AcPayService
1. public
DataList<AcPayDO> queryAcPayBySellMemberId(String
memberId);
提供一个赔付查询类。
AcSyncService
1. public
DataList<AcSyncDO> queryAcSyncDOListByConditions(AcSyncDO acSyncDO);
只被单元测试用到,删。
2. public
Long
insertAcSync(AcSyncDO acSyncDO);
被CreditAdjustmentProccessService和BuildClaimOrderAction依赖。感觉有点问题,不应该在Action直接调用资金同步,应该是资金变化会触发资金同步吧。搞个资金变化服务类?
AliCreditService,BatOpService
后台批量授信不用改了,自成体系。
BlackListService
batchOperation方法职责不清楚,拆成add,remove两个方法要好些。不过外部关联不大,重构优先级低
ContractAttachService
public
String
getAttachFullPathById(long
id);
类名不好,重构优先级低
CreditAdjustmentProccessService
public
boolean
processAdjustment(CreditAdjustmentDO creditAdjustmentDO);
只被任务用到,职责还不是很明白,和索赔订单有对应关系吗?
ContractService
1. public
int
update(ContractDO contractDO);
只是简单的DAO封装,可以把ContractDelayAction.delayFreezeDatetime的部分拿过来。
2. ContractDO find(Long
id);
提供成一个合同的查询服务。
3. DataList<GoodsDO> queryGoodsRecordsByContractId(Long
contractId);
提供成一个合同的查询服务。
4. public
ContractDO getContractByNO(String
contractNo);
提供成一个合同的查询服务。
5. public
boolean
closeContract(ContractDO contractDO, String
operatorId);
和levit的关闭合同一样,可以合并成一个合同服务。
CreditAdjustmentService(授信记录)
1. public
AdjustEndTimeReslutVO adjustEndDate(AdjustEndTimeVO adjustEndTimeVO);
调整授信有效期,非核心业务,creditOperationAction.adjustTime方法依赖。
2. public
Integer
invalidCreditById(Long
id);
设置授信无效,只是对dao的封装,CreditAdjustmentProccessService.processAdjustment依赖,回收授信。
3. public
Integer
invalidCreditByMemberId(String
memberId);
只被单元测试用到,删。
4. public
Long
createAdjustment(CreditAdjustmentDO creditAdjustmentDO);
创建授信记录,CommonCreditAdjustOperator依赖。这个方法和核心的CreditAndAdjustService有啥关系?
这种破事儿不因该CreditAndAdjustService.create做吗?需要阿炳确认。
5. public
List<CreditAdjustmentDO> fetchCreditAdjustmentsByCondition(CreditAdjustmentParam params);
提供一个查询服务。
DrIncomeCreditService
业务会调整,没有递延的概念。暂不处理。
GuaranteeInfoService
提供给CRM工单返回信息接口。不知道还有其他没有给外部提供服务?可以整合在一起。
JoinCreditService
public
CreditResultVO batJoinCredit(CreditAndAdjVO creditAndAdjVO);
没啥问题,类名和方法名还不够简单,类名不是主谓词。优先级低。
OracleMemberService
没太看的明白用意,需要阿炳确认。