代码编写规范理解

核心逻辑方法每一步都需要注释,抽取方法需要注释。例如:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.annotation.Resource;


import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


import com.creditcities.framework.jms.AsyncCallService;
import com.creditcities.p2p.common.constants.DictionaryTypeConstants;
import com.creditcities.p2p.common.service.RemoteCommonService;
import com.creditcities.p2p.common.util.ArithUtil;
import com.creditcities.p2p.common.util.DateUtil;
import com.creditcities.p2p.dto.LoanOrderInfoDto;
import com.creditcities.p2p.dto.TransLoanInfoDto;
import com.creditcities.p2p.dto.TransLoanInfoDtoWrapper;
import com.creditcities.p2p.repository.custAcc.dao.CustTotalInfoDao;
import com.creditcities.p2p.repository.custAcc.model.CustTotalInfo;
import com.creditcities.p2p.repository.transLoanInfo.dao.TransLoanInfoDao;
import com.creditcities.p2p.transLoanInfo.service.TransLoanInfoService;
import com.creditcities.p2p.transLoanInfo.viewModel.TransLoanInfoModel;
import com.creditcities.p2p.transLoanInfo.viewModel.TransLoanSpeInfoModel;


/**
 * <自动满标>
 * @author XX
 * @since 2014-12-16 下午4:11:18
 */
@Service
public class AutoFullTransLoanInfoService {

private Log logger = LogFactory.getLog(AutoFullTransLoanInfoService.class);

@Autowired
private AsyncCallService asyncCallService;
@Autowired
private TransLoanInfoService transLoanInfoService;
@Autowired
private RemoteCommonService remoteCommonService;
@Resource
private CustTotalInfoDao custTotalInfoDao;
@Resource
private TransLoanInfoDao transLoanInfoDao;


/**
* 自动满标
* @author wg
* @throws Throwable 
*/
@Transactional
public void autoFullTransLoanInfo() throws Throwable {
try {

logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo is start");
int minute = -30;//到期前的分钟数
/*******************1.查询后台待满标列表**************/
List<TransLoanInfoModel> trLifList = this.getTransLoanInfoByParams(minute);
if(CollectionUtils.isEmpty(trLifList)){
return ;
}
/*******************2.同步服务:把前台散标表对应的记录状态修改为满标,保证互联网用户无法买散标,返回散标的集合**************/
Map<Long,TransLoanInfoDto> remoteTransLoanMap = this.batchUpdateTransLoanInfoService(trLifList, minute);
   logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo trLifList.size()>0 . trLifList.size()="+trLifList.size());
for(TransLoanInfoModel info : trLifList){
/*******************2.1获取前台散标**************/
TransLoanInfoDto dtoModel = remoteTransLoanMap.get(info.getTransLoanId());
/*******************2.2查询前端散标表,可购买金额=总金额-以购买金额**************/
Double remainAmt = Double.valueOf(
ArithUtil.sub(dtoModel.getLoanAmt(), dtoModel.getOrderedAmt()));
logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo info = "+info);
/******************2.3*通过发标id获取发标特殊用户**************/
List<TransLoanSpeInfoModel> modelList = transLoanInfoService.getLoanSpeInfoByTransLoanId(info.getTransLoanId());
if(CollectionUtils.isEmpty(modelList)){
logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo  modelList.size()="+trLifList.size());
for(TransLoanSpeInfoModel transLoanSpeInfoModel:modelList){
/*******************2.3.1拼装特殊账户购买散标的LoanOrderInfoDto**************/
LoanOrderInfoDto dto = this.BuildLoanOrderInfoDto(transLoanSpeInfoModel, info.getTransLoanId(), remainAmt);
/*******************2.3.2调用异步服务购买散标**************/
asyncCallService.send("autoFullTransLoanInfoListenerService", dto);
/*******************2.3.3循环减可购买金额**************/
remainAmt = Double.valueOf(
ArithUtil.sub(remainAmt, dto.getOrderAmt()));
}
if(remainAmt>0){
/*******************2.4如果所有特殊帐户都买了还是未买满,需要设置状态为投标中**************/
this.updateTransLoanInfoService(info.getTransLoanId());
}
}else{
logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo  modelList is empty");
}

}
logger.info("AutoFullTransLoanInfoService autoFullTransLoanInfo is end .");
} catch (Throwable e) {
logger.error("AutoFullTransLoanInfoService autoFullTransLoanInfo is error .",e);
throw e;
}
}

/**
* 查询后台待满标列表
* @return
* @author wg
* @see
*/
public List<TransLoanInfoModel> getTransLoanInfoByParams(int minute){
Map<String,Object> param = new HashMap<String,Object>();
param.put("status", DictionaryTypeConstants.TRANSLOANINFO_STATUS_BID);
param.put("isAutoSell", DictionaryTypeConstants.YES);
param.put("sellEndDate", DateUtil.addMinute(DateUtil.getCurrentTime(), minute));
List<TransLoanInfoModel> trLifList = transLoanInfoDao.getTransLoanInfoByParams(param);
logger.info("时间:"+DateUtil.addMinute(DateUtil.getCurrentTime(), minute)+"需要自动满标的条数为0,trLifList is empty");
return trLifList;
}

/**
* 同步服务:把前台散标表对应的记录状态修改为满标,保证互联网用户无法买散标
* @param transLoanInfoIdsList
* @param minute
* @return
* @author wg
* @see
*/
private Map<Long,TransLoanInfoDto> batchUpdateTransLoanInfoService(List<TransLoanInfoModel> trLifList,int minute){
List<Long> transLoanInfoIdsList = new ArrayList<Long>(); 
for(TransLoanInfoModel info : trLifList){
transLoanInfoIdsList.add(info.getTransLoanId());
}
TransLoanInfoDtoWrapper transLoanInfoDtoWrapper = new TransLoanInfoDtoWrapper();
Map<Long,TransLoanInfoDto> remoteTransLoanMap = new HashMap<Long,TransLoanInfoDto>();//存放返回散标的MAP
if(CollectionUtils.isEmpty(transLoanInfoIdsList)){
logger.info("时间:"+DateUtil.addMinute(DateUtil.getCurrentTime(), minute)+"待发送前台的 transLoanInfoIdsList is empty");
return remoteTransLoanMap;
}
transLoanInfoDtoWrapper.setTransLoanInfoIdsList(transLoanInfoIdsList);
//同步服务:把前台散标表对应的记录状态修改为满标,保证互联网用户无法买散标,返回散标的集合
TransLoanInfoDtoWrapper dto = remoteCommonService.batchUpdateTransLoanInfo(transLoanInfoDtoWrapper);
if(CollectionUtils.isNotEmpty(dto.getTransLoanInfoDtoList())){
for(TransLoanInfoDto transDto:dto.getTransLoanInfoDtoList()){
remoteTransLoanMap.put(transDto.getTransLoanId(), transDto);
}
}else{
logger.info("时间:"+DateUtil.addMinute(DateUtil.getCurrentTime(), minute)+"查询到的前台散标集合 dto.getTransLoanInfoDtoList() is empty");
}
return remoteTransLoanMap;
}

/**
* 拼装特殊账户购买散标的LoanOrderInfoDto
* @param transLoanSpeInfoModel
* @param transLoanId
* @param remainAmt
* @return
* @author wg
* @see
*/
public LoanOrderInfoDto BuildLoanOrderInfoDto(TransLoanSpeInfoModel transLoanSpeInfoModel,Long transLoanId,Double remainAmt){
LoanOrderInfoDto dto = new LoanOrderInfoDto();
dto.setTransLoanId(transLoanId);
dto.setCustId(transLoanSpeInfoModel.getCustId());
CustTotalInfo dataModel = custTotalInfoDao.selectCustTotalInfoByCustId(transLoanSpeInfoModel.getCustId());
//如果账户余额小于最大购买金额则按账户余额购买,否则按最大购买金额购买。
if (ArithUtil.compare(dataModel.getUsableAmt(), 
transLoanSpeInfoModel.getMaxOrderAmt()) < 0) {
dto.setOrderAmt(dataModel.getUsableAmt());
}else{
dto.setOrderAmt(transLoanSpeInfoModel.getMaxOrderAmt());
}
//如果购买金额小于可购买金额,则按购买金额购买,否则按可购买金额购买
if (ArithUtil.compare(dto.getOrderAmt(), 
remainAmt) > 0) {
dto.setOrderAmt(remainAmt);
}
return dto;
}

/**
* 更新前台散标表未满标
* @param transLoanId
* @author wg
* @see
*/
public void updateTransLoanInfoService(Long transLoanId){
TransLoanInfoDto transdto = new TransLoanInfoDto();
transdto.setTransLoanId(transLoanId);
transdto.setStatus(DictionaryTypeConstants.TRANSLOANINFO_STATUS_BID);
asyncCallService.send("updateTransLoanInfoListenerService", transdto);
logger.error("散标transLoanId:"+transLoanId+"自动满标未成功!!!");
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值