/** * 进行认购处理 * * @return */ public HttpResultModel<Object> dealSubproject( SubProjectReq req, Member m, MemberOther mo, Project p) { // 1.生成购买记录 ProjectSubscription psr = new ProjectSubscription(); psr.setMemberid(m.getId()); psr.setProjectid(p.getId()); psr.setIslead(req.getIsLead() == 1); psr.setAmount(req.getQuantity() * p.getUnitprice()); psr.setFenshu(req.getQuantity()); psr.setName(m.getTruename()); psr.setPhoneno(m.getPhoneno()); psr.setEmail(m.getEmail()); psr.setIdcard(m.getIdcard()); int res1 = projectSubscriptionDao.insertSelective(psr); // 2.扣减账户余额 MemberOther updateOther = new MemberOther(); // 余额=余额-应付款 Float yF = (p.getUnitprice() * req.getQuantity()); Float YR = mo.getBalanceprice(); updateOther.setBalanceprice(YR - yF); updateOther.setAllowwithdrawprice(mo.getAllowwithdrawprice() - yF); updateOther.setMemberid(m.getId()); int res2 = memberOtherDao.updateByMemberIdSelective(updateOther); // 3.插入流水. BalanceRecord bRecord = new BalanceRecord(); bRecord.setAmount(-yF); bRecord.setMemberid(m.getId()); bRecord.setAfteramount((float) (YR - yF)); bRecord.setTypeid(ParseHelper.ToShort(RecordType.Invest.value())); bRecord.setWithwardid(p.getId()); bRecord.setRemark("认购项目"); bRecord.setOptname(m.getTruename()); int res3 = blanceRecordDao.insertSelective(bRecord); // 4.更新项目信息 Project updateProject = new Project(); updateProject.setId(p.getId()); updateProject.setRedidueFenshu(p.getRedidueFenshu() + req.getQuantity()); updateProject.setInvestmentnumber(p.getInvestmentnumber() + 1); // 已购买份数除以份数*100 int rp = updateProject.getRedidueFenshu() * 100 / p.getFenshu(); updateProject.setSchedule(rp); if (req.getIsLead() == 1) // 领投 { // 已购买的份数加上新的份数 updateProject.setRediduePreheatMaxFenShu(p.getRediduePreheatMaxFenShu() + req.getQuantity()); } int res4 = projectDao.updateByPrimaryKeySelective(updateProject); if (res1 != 1 || res2 != 1 || res3 != 1 || res4 != 1) // 每个操作都应该只有一条影响 { throw new TransactionalRuntimeException("认购失败!"); } int year = ParseHelper.GetInDate(new java.util.Date(), 1); int month = ParseHelper.GetInDate(new java.util.Date(), 2); int day = ParseHelper.GetInDate(new java.util.Date(), 3); // 您于*年*月*日认购易淘众筹项目“*”,已确认成功,确认金额*元。如有任何疑问,请致电联系客服4000-999-177 String content = "您于" + year + "年" + month + "月" + day + "日" + "认购易淘众筹项目“" + p.getProjectname() + "”," + "已确认成功,确认金额" + yF + "元。" + "如有任何疑问,请致电联系客服4000-999-177"; // 发送认购短信 SmsUtils.sendSMS(m.getPhoneno(), content); HttpResultModel<Object> rModel = new HttpResultModel<Object>(); rModel.setCode(1); rModel.setMsg("认购成功!"); rModel.setUrl( PropertyUtils.getProperty("java.wap.url") + "/home/detail?projectid=" + p.getId()); return rModel; }