AccountDO增加isCanceled(),isFreezed(),isOpened(),isUnApplied(),isIn(...)方法,太多的地方需要判断这些。
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方法有一些解冻的逻辑。
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
没太看的明白用意,需要阿炳确认。