`
san_yun
  • 浏览: 2652648 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

已有的业务代码codeReview

    博客分类:
  • java
阅读更多
在看诚保代码的过程中发现一些service的方法有些问题。记录在此:

模型代码

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

没太看的明白用意,需要阿炳确认。
分享到:
评论

相关推荐

    代码审查CodeReview的最佳实践

    我一直认为CodeReview(代码审查)是软件开发中的... 然而对于我观察到的大部分软件开发团队来说,认真做CodeReview的很少,有的流于形式,有的可能根本就没有CodeReview的环节,代码质量只依赖于事后的测试。也有些

    IDEA代码检视插件Code Review Helper(支持团队协同)

    在实际使用中,下载的压缩包文件"IntellijIDEA-CodeReview-Plugin-master"包含了插件的源代码,开发者可以对其进行定制或扩展以满足特定团队的需求。安装插件通常包括以下几个步骤: 1. 解压下载的压缩包。 2. 打开...

    静态测试方法之代码审查(CodeReview)的清单

    静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...

    Source Insight CodeReview宏,增加使用说明

    **Source Insight CodeReview宏**是专门针对Source Insight这款强大的源代码查看和编辑工具设计的一套扩展功能,主要用于代码评审和统计。Source Insight以其强大的代码导航、语法高亮和实时分析能力,深受程序员...

    code review代码检测原理

    **代码审查(Code Review)是软件开发过程中的一个重要环节,旨在提高代码质量,发现潜在的错误,提升团队协作效率,并确保代码遵循最佳实践和项目规范。本文将深入探讨代码审查的原理、步骤以及如何有效地执行代码...

    CodeReview工具

    Code Review是软件开发过程中的一个重要环节,它有助于提高代码质量,发现潜在的错误,以及确保团队成员间的代码风格一致。本文将详细介绍两款Eclipse插件——Jupiter和Reviewclipse,它们是进行Code Review的有力...

    Steven Code Review 代码在线审查

    Steven Code Review 2009.12M1发布包.rar 代码在线审查工具 @date: 2009-12-28 @author: YF @email: yifi@tom.com 功能: 1 方便学员学习教师的代码,无需在本机运行IDE即可以代码加亮的方式查看服务器共享的代码...

    CodeReview工具Jupiter

    Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。  ...

    Source Insight 宏 codeReview.em

    CodeReview工具的作用:1.减少评审人的缺陷记录和汇总时间,方便责任人查找问题出处;2.检视完成后生成检查报告,代码作者点击按钮可以直接找到错误处;3.任务责任人修改完成后,直接修改问题状态,组织者按快捷键...

    Modern Code Review- A Case Study at Google.pdf

    Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an ...

    PHP-Code-review.rar_PHP codereview_php code review_php代码review

    代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应 用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必 要的风险。

    Codereview 代码审查工具(国人开发)

    软件介绍: 一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;... 直观可视:分析结果与源代码在同一界面显示对照,...http://www.codereview.com.cn

    Redmine插件Code Review使用介绍

    在Redmine中,Code Review插件是一个重要的扩展,它致力于帮助开发团队进行代码审查,提升代码质量和团队协作效率。本文将详细介绍如何使用Redmine的Code Review插件。 首先,安装Code Review插件是必要的步骤。...

    C++ Code Review检查清单

    C++代码 Code Review时使用的检查清单和问题记录模板

    CodeReview常見代碼問題

    ### CodeReview中的常见代码问题分析 #### 一、引言 在软件开发过程中,CodeReview(代码审查)是一项至关重要的活动。它不仅有助于提高代码质量,还能促进团队成员之间的知识共享和技术交流。本文将深入探讨Code...

    code review

    `CodeReview.em`可能是一个包含了代码审查过程记录或结果的文件,而`codereivew.docx`可能是详细的代码审查报告,其中可能详细列出了审查过程中发现的问题、建议的修改以及后续的行动计划。通过这两个文件,团队成员...

    code review tool from google

    根据给定的文件信息,我们可以提炼出关于代码审查(Code Review)及其在谷歌开发流程中的应用的关键知识点。 ### 什么是代码审查? 代码审查是一种软件工程实践,其中一名开发者编写代码后,由另一名开发者进行...

    代码审查code review.7z

    这里的资源主要是讲述了代码审查的必要性。里面有三个文档,简单的讲述了一下内容。举例实用工具。 为什么要进行Code Review?  如何做Code Review? 如何使用工具进行Code Review? CheckStyle FindBugs PMD 使用...

    基于Gitlab的代码审查流程(Code-Review)方案

    GitLab-CI是GitLab自带的持续集成工具,核心思想是每当有代码提交到仓库时自动触发一系列脚本执行,包括测试、编译、部署等。通过编辑.gitlab-ci.yml文件,开发者可以定义如何执行这些脚本。该过程由GitLab-Runner来...

Global site tag (gtag.js) - Google Analytics