/** 关注 取消关注 */ @Override @Transactional(rollbackFor = Exception.class, timeout = 30) public HttpResultModel<Object> follow(ProjectFavorite profavorite) { HttpResultModel<Object> followRes = new HttpResultModel<Object>(); if (profavorite.getIsdel() == 0) // 增加关注 { projectFavoriteDao.cancelFavorite(profavorite.getMemberid(), profavorite.getProjectid()); profavorite.setIsdel(null); int r1 = projectFavoriteDao.insertSelective(profavorite); int r2 = projectDao.changeFlowNum(profavorite.getProjectid(), 1); if (r1 != 1 || r2 != 1) // 每个操作都应该只有一条影响 { throw new TransactionalRuntimeException("关注失败!"); } } else { int r1 = projectDao.changeFlowNum(profavorite.getProjectid(), -1); int r2 = projectFavoriteDao.cancelFavorite(profavorite.getMemberid(), profavorite.getProjectid()); if (r1 != 1) // 每个操作都应该只有一条影响 { throw new TransactionalRuntimeException("取消关注失败!"); } } followRes.setCode(1); followRes.setMsg("操作成功!"); return followRes; }
@Override public PagedResponse<Project> queryProjectList(PagedProjectReq req) { PagedResponse<Project> res = null; res = projectDao.queryProjectList(req); return res; }
@Override @Transactional(rollbackFor = Exception.class, timeout = 30) public int modifyProject(ModifyProjectReq req) { Long projectId = req.getProject().getId(); // 1.修改项目主表project,还没有日志记录 req.getProject().setCreatename(req.getPublishName()); long i = projectDao.updateByPrimaryKeySelective(req.getProject()); if (i > 0) { // 2.修改策略表 projectstrategy 先删除原来的策略 在插入新的策略 int upDel = projectStrategyDao.updateDeleteByProjectId(projectId); // 策略表打删除标记 if (upDel > 0) { req.getProjectStrategyList().forEach(action -> action.setProjectid(projectId)); int proStrategyResult = projectStrategyDao.insertList(req.getProjectStrategyList()); // 插入新的策略 // 3.修改项目图片表 projectimage if (proStrategyResult > 0) { int updeImg = 0; // 先删除的原来的图片,在插入新的图片 List<ModifyProjectImg> modifyProjectImgs = req.getModifyProjectImgList(); if (modifyProjectImgs != null && modifyProjectImgs.size() > 0) { List<ModifyProjectImg> updateImgs = modifyProjectImgs .stream() .filter(t -> t.getModifyType() == 2) .collect(Collectors.toList()); if (updateImgs != null && updateImgs.size() > 0) { updeImg = projectImageDao.updateDeleteById(updateImgs); } } else { updeImg = 1; } int insImg = 0; // 插入新的图片 List<ProjectImage> projectImages = req.getProjectImageList(); if (projectImages != null && projectImages.size() > 0) { req.getProjectImageList() .forEach(action -> action.setProjectid(req.getProject().getId())); insImg = projectImageDao.insertList(req.getProjectImageList()); } else { insImg = 1; } if (updeImg > 0 && insImg > 0) { return 1; } } } } return 0; }
@Override public int isShelf(ProjectStatusReq req) { // 1.修改项目表project上下架状态 int a = projectDao.isShelf(req); // 2.projectlog添加日志记录 if (a > 0) { ProjectLogModel pLogModel = new ProjectLogModel(); pLogModel.setProjectId(req.getProjectId()); pLogModel.setIsDel(0); pLogModel.setOperater(req.getOperater()); pLogModel.setRemark(req.getLogRemark()); int b = projectLogDao.insert(pLogModel); if (b > 0) { return 1; } } return 0; }
/* * 项目审核 通过or拒绝 wangchao */ @Override @Transactional(rollbackFor = Exception.class, timeout = 30) public int audit(ProjectAuditReq req) { // 记日志,更新审核状态 ProjectLogModel pLogModel = new ProjectLogModel(); pLogModel.setProjectId(req.getProjectId()); pLogModel.setIsDel(0); pLogModel.setOperater(req.getAuditName()); pLogModel.setRemark(req.getLogRemark()); int a = projectLogDao.insert(pLogModel); if (a > 0) { int b = projectDao.audit(req); if (b > 0) { return 1; } } return 0; }
@Override @Transactional(rollbackFor = Exception.class, timeout = 30) public int modifyProjectStatus(ProjectStatusReq req) { // 1.修改项目表project融资状态 int a = projectDao.modifyProjectStatus(req); // 2.projectlog添加日志记录 if (a > 0) { ProjectLogModel pLogModel = new ProjectLogModel(); pLogModel.setProjectId(req.getProjectId()); pLogModel.setIsDel(0); pLogModel.setOperater(req.getOperater()); pLogModel.setRemark(req.getLogRemark()); int b = projectLogDao.insert(pLogModel); if (b > 0) { return 1; } } return 0; }
/* * 发布项目 wangchao */ @Override @Transactional(rollbackFor = Exception.class, timeout = 30) public int publishProject(PublishProjectReq req) { // 1.项目主表project req.getProject().setCreatename(req.getPublishName()); // String projectimage =req.getProject().getProjectimage(); // projectimage=PropertyUtils.getProperty("ImgShowUrl")+projectimage; long i = projectDao.insert(req.getProject()); if (i > 0) { // 2.插入策略表 projectstrategy req.getProjectStrategyList().forEach(action -> action.setProjectid(req.getProject().getId())); int proStrategyResult = projectStrategyDao.insertList(req.getProjectStrategyList()); // 3.项目图片表 projectimage if (proStrategyResult > 0) { req.getProjectImageList().forEach(action -> action.setProjectid(req.getProject().getId())); int k = projectImageDao.insertList(req.getProjectImageList()); if (k > 0) { return 1; } } } return 0; }
@Override public int updateByPrimaryKey(Project record) { return projectDao.updateByPrimaryKey(record); }
@Override public Project selectByPrimaryKey(Long id) { return projectDao.selectByPrimaryKey(id); }
@Override public long insert(Project record) { return projectDao.insert(record); }
@Override public int deleteByPrimaryKey(Long id) { return projectDao.deleteByPrimaryKey(id); }
/** 定时服务 茹化肖 */ @Override public int QuartzServie() { return projectDao.QuartzServie(); }
@Override public List<ToDoDataStatistics> getToDoDataStatices() { return projectDao.getToDoDataStatices(); }
/** * 进行认购处理 * * @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; }
/** Wap获取项目列表 茹化肖 */ @Override public PagedResponse<ProjectModel> getProjectList(PagedProjectReq req) { return projectDao.getProjectList(req); }
/** 获取项目详情 */ @Override public ProjectModel getProjectDetail(Long projectid) { return projectDao.getProjectDetail(projectid); }
/** 新手专享项目列表 */ @Override public List<ProjectModel> getNoviceProject() { return projectDao.getNoviceProject(); }
/** * 我发起的项目 * * @param * @author hulingbo * @date 2016年3月31日11:46:29 * @return */ public List<Project> getListMore(ProLaunchReq record) { return projectDao.getListMore(record); }
/** 认购项目 茹化肖 */ @Override @Transactional(rollbackFor = Exception.class, timeout = 30) public HttpResultModel<Object> subproject(SubProjectReq req) { HttpResultModel<Object> result = new HttpResultModel<Object>(); Member user = memberDao.selectById(req.getUserId()); MemberOther userOther = memberOtherDao.selectByMemberId(req.getUserId()); Project project = projectDao.selectByPrimaryKey(req.getProjectId()); // 1.项目不在预热或进行中或已下架 if (project == null) { result.setCode(-1); result.setMsg("该项目暂时不能购买!"); return result; } // 2.验证用户支付密码 if (!MD5Util.MD5(req.getPayPwd()).equals(userOther.getPaypassword())) { // 支付密码不同 result.setCode(-1); result.setMsg("支付密码错误,请重试!"); return result; } // 3项目预热中,购买人非领投人 if (project.getProjectstatus() == ProjectStatus.Preheating.value() && user.getLevel() != MemberTypeEnum.LeadInvestUser.value()) { result.setCode(-1); result.setMsg("预热中的项目只有领投资格会员可以认购"); return result; } // 4项目众筹中,普通用户 if (project.getProjectstatus() == ProjectStatus.Financeing.value() && user.getLevel() == MemberTypeEnum.CommonUser.value()) { result.setCode(-1); result.setMsg("您尚未实名认证,请先进行实名认证!"); return result; } // 5项目众筹中,实名认证用户 if (project.getProjectstatus() == ProjectStatus.Financeing.value() && user.getLevel() == MemberTypeEnum.CertificationUser.value()) { result.setCode(-1); result.setMsg("您尚未进行投资人认证,请先进行投资人认证!"); return result; } // 新手专享判断 if (project.getIsNovice() == 1) { if (projectSubscriptionDao.isMyHave(project.getId(), user.getId()) > 0) { result.setCode(-1); result.setMsg("新手专享项目只能认购一次!"); return result; } } if (req.getIsLead() == 1) { // 领投人 if (user.getLevel() != MemberTypeEnum.LeadInvestUser.value()) { result.setCode(-1); result.setMsg("您当前不具备领投资格,请先进行领投人认证!"); return result; } // 领投份数小于最低份额 if (req.getQuantity() < project.getLeadminfenshu()) { result.setCode(-1); result.setMsg("您领投的份额低于该项目要求的最低领投份!"); return result; } // 领投份数大于该项目的剩余可领投份额 if (req.getQuantity() > (project.getPreheatmaxfenshu() - project.getRediduePreheatMaxFenShu())) { result.setCode(-1); result.setMsg("您领投的份额大于该项目的剩余领投份额!"); return result; } // 领投份数大于该项目的剩余可领投份额 if (req.getQuantity() > (project.getFenshu() - project.getRediduePreheatMaxFenShu())) { result.setCode(-1); result.setMsg("您领投的份额大于该项目的剩余份额!"); return result; } } else { // 跟投. // 领投份数大于该项目的剩余可领投份额 if (req.getQuantity() > (project.getFenshu() - project.getRedidueFenshu())) { result.setCode(-1); result.setMsg("您投资的份额大于该项目的剩余份额!"); return result; } } // 验证金额 if (req.getQuantity() * project.getUnitprice() > userOther.getBalanceprice()) { result.setCode(-1); result.setMsg("您认购项目所需金额大于现有余额,请先进行充值!"); return result; } return dealSubproject(req, user, userOther, project); }
@Override public List<DataStatistics> getDataStatistics() { return projectDao.getDataStatistics(); }