发表于: 2017-10-21 18:01:36
1 662
一.今天完成的主要事情
1.完成了查看合同接口,查看银行列表接口,查看用户的银行卡信息接口,以及查看产品是否可投资接口
查看银行列表接口和查看用户银行卡信息接口相对比较简单,就不贴了
查看合同接口代码如下
/**
* 22.查询合同接口
*
* @param
* @return
* @throws ServiceException
* @throws ServiceDaoException
*/
@RequestMapping(value = "/a/u/contract", method = RequestMethod.GET)
public String getContract(HttpServletRequest request,
HttpServletResponse response, ModelMap model, Long uid, Long userProductRelationId,
Integer contractType, Integer contractStatus) throws Exception {
log.info("getContract() parameters: uid : " + uid + ", userProductRelationId : "
+ userProductRelationId + ", contractType : " + contractType + ", contractStatus : "
+ contractStatus);
//验证参数
Integer validateResult = ContractUtil.validateContractParameters(uid, userProductRelationId, contractType, contractStatus);
if (validateResult < 0) {
model.addAttribute("code", validateResult);
return "/common/failure";
}
User user = null;
UserProductRelation userProductRelation = null;
Product product = null;
Investment investment = null;
if (contractStatus == 1) {
try {
//根据uid查找用户对象
user = userService.getObjectById(uid);
log.info("get user data by uid!");
if (DataUtils.isNullOrEmpty(user)) {
log.info("Couldn't find user by uid, uid is : " + uid);
model.addAttribute("code", -4);
return "/common/failure";
}
//根据userProductRelationId查找userProductRealtion对象
userProductRelation = userProductRelationService.getObjectById(userProductRelationId);
log.info("get userProductRelation data is : " + userProductRelation);
if (DataUtils.isNullOrEmpty(userProductRelation)) {
log.info("Couldn't find userProductRelation by userProductRelationId, " +
"userProductRelationId is : " + userProductRelationId);
model.addAttribute("code", -4);
return "/common/failure";
}
//获取productId
Long productId = userProductRelation.getProductId();
log.info("get field productId from userProductRelation, productId is : " + productId);
if (DataUtils.isNullOrEmpty(productId)) {
log.info("Field productId can not be NULL!");
model.addAttribute("code", -40002);
return "/common/failure";
}
//根据productId获取product
product = productService.getObjectById(productId);
log.info("get product data is : " + product);
if (DataUtils.isNullOrEmpty(product)) {
log.info("Couldn't find product by productId, productId is : " + productId);
model.addAttribute("code", -4);
return "/common/failure";
}
//根据userProductRealtionId获取investmentId
List<Long> investmentIds = investmentService.getInvestmentIdsByUprId(userProductRelationId,
0, Integer.MAX_VALUE);
log.info("get countInvestmentIdsByUprId size is : " + investmentIds.size());
if (CollectionUtils.isEmpty(investmentIds)) {
log.info("Couldn't find investmentId by UprId or The length of investmentIds is wrong.");
model.addAttribute("code", -1000);
return "/common/failure";
}
if (investmentIds.size() != 1) {
log.info("The length of investmentIds is wrong.");
model.addAttribute("code", -40004);
return "/common/failure";
}
//获取investment对象
investment = investmentService.getObjectById(investmentIds.get(0));
log.info("get investment data is : " + investment);
} catch (Throwable t) {
t.printStackTrace();
log.error(t.getMessage());
log.error("getContract() error");
model.addAttribute("code", -1);
return "/common/failure";
}
}
model.addAttribute("user", user);
model.addAttribute("userProductRelation", userProductRelation);
model.addAttribute("product", product);
model.addAttribute("investment", investment);
switch (contractType) {
case 0:
return "/polyFinance-business-service/contract/view/contractA1";
case 1:
return "/polyFinance-business-service/contract/view/contractA2";
case 2:
return "/polyFinance-business-service/contract/view/contractA3";
case 3:
return "/polyFinance-business-service/contract/view/contractB";
case 4:
return "/polyFinance-business-service/contract/view/contractC";
case 5:
return "/polyFinance-business-service/contract/view/contractD";
case 6:
return "/polyFinance-business-service/contract/view/contractE";
default:
return "/common/failure";
}
}
根据老大的提示,合同实质上都是一个个jsp页面,而出借咨询与服务协议共有三种,其他合同共有4个,所以一共有七个合同jsp页面
如果用户查看合同模版,就直接返回jsp页面即可,如果用户查看自己签的合同,就从相应的数据表中获取该合同的有关信息,通过jsp页面返回
复盘项目中没有提供合同模版,所以这里只是将用户的相关信息返回即可
还有一个接口是查询该产品是否可以投资
/**
* 26. 查看产品是否可以投资
*
* @param
* @return
* @throws ServiceException
* @throws ServiceDaoException
*/
@RequestMapping(value = "/a/u/product/investable", method = RequestMethod.GET)
public String getInvestableProduct(HttpServletRequest request,
HttpServletResponse response, ModelMap model, Long uid,
Long productId)
throws Exception {
log.info("investProduct() parameters : uid: " + uid + ", productId: " + productId);
if (DataUtils.isNullOrEmpty(uid) || DataUtils.isNullOrEmpty(productId)){
log.info("Parameters uid or productId can not be NULL");
model.addAttribute("code", -1000);
return "/common/failure";
}
try {
//根据产品ID获取产品对象
Product product = productService.getObjectById(productId);
if (DataUtils.isNullOrEmpty(product)){
log.info("Couldn't find product by productId!");
model.addAttribute("code", -4);
return "/common/failure";
}
//获取是否限购字段
Integer limitd = product.getLimited();
log.info("get field limited from product, limited is " + limitd);
if (limitd != 1){
model.addAttribute("code", 0);
return "/common/success";
} else{
//获取用户产品表IDList
List<Long> userProductRelationIds = userProductRelationService.getUserProductRelationIdsByUserId(
uid, 0, Integer.MAX_VALUE);
log.info("get countUserProductRelationIdsByUserId size is : " + userProductRelationIds.size());
//如果为空,说明用户没有投资过任何产品,直接返回
if (CollectionUtils.isNotEmpty(userProductRelationIds)){
//如果不为空,继续判断. 获取用户产品表List
List<UserProductRelation> userProductRelations = userProductRelationService.getObjectsByIds(
userProductRelationIds);
log.info("get userProductRelation data size is : " + userProductRelations.size());
for (UserProductRelation userProductRelation : userProductRelations) {
//如果用户投资的产品中包括该产品ID,说明用户已经投资过该产品
if (DataUtils.isNullOrEmpty(userProductRelation) ||
userProductRelation.getProductId().equals(productId)){
log.info("Product can only be purchased once, productId is "+ productId);
model.addAttribute("code", -10012);
return "/common/success";
}
}
}
model.addAttribute("code", 0);
}
} catch (Throwable t){
t.printStackTrace();
log.error(t.getMessage());
log.error("getInvestableProducterror() error, uid is " + uid + "productId is " + productId);
model.addAttribute("code", -1);
}
return "/common/success";
}
该接口是一个新加的接口,因为产品有限购功能,如果一个产品限制只能投资一次,按用户投资的时候需要先判断用户能不能投资该产品,所以单独设立一个接口判断该用户是否能投资该产品
整体逻辑是: 判断产品是否限购,不限购直接返回成功,如果限购则继续通过uid在用户产品关联表中查询相应的记录,依次遍历该记录中记录的产品ID字段,如果记录的产品Id中有该限购产品的ID,则说明用户已经投资过该产品,则提示用户不允许投资,否则,用户就可以继续正常投资
二.明天计划完成的事情
1.编写用户投资接口的前半部分,即用户正常投资部分
三.遇到的问题
暂无
明天下午有事,可能要请半天假,但是这次说什么都不能再延期了,明天上午抓紧时间吧
四.收获
以上
五,项目进度情况
有延期风险
评论