From d28bed1a1275131a5ca37f7da37961e2b518ac07 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 26 八月 2019 13:44:00 +0800 Subject: [PATCH] 淘礼金创建异常处理 --- fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java | 178 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 142 insertions(+), 36 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java index 82ab9fa..55b62f9 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java @@ -23,6 +23,7 @@ import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.bus.user.UserMoneyExtra; import com.yeshi.fanli.entity.bus.user.UserRank; import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException; import com.yeshi.fanli.log.LogHelper; @@ -32,6 +33,7 @@ import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinReportService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserMoneyExtraService; import com.yeshi.fanli.util.MoneyBigDecimalUtil; @@ -66,6 +68,9 @@ @Resource private UserTaoLiJinRecordService userTaoLiJinRecordService; + + @Resource + private UserTaoLiJinReportService userTaoLiJinReportService; @Override @@ -143,7 +148,7 @@ if (uid == null) { throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); } - String value = configTaoLiJinService.getValueByKey("hongbao_newbies"); + String value = configTaoLiJinService.getValueByKey("hongbao_newbies",null); if (StringUtil.isNullOrEmpty(value)) { throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�"); } @@ -202,7 +207,7 @@ throw new UserTaoLiJinOriginException(2, "鐢ㄦ埛绛夌骇涓嶈冻"); } - String value = configTaoLiJinService.getValueByKey(key); + String value = configTaoLiJinService.getValueByKey(key,null); if (StringUtil.isNullOrEmpty(value)) { throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�"); } @@ -241,7 +246,7 @@ throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); } - String value = configTaoLiJinService.getValueByKey("hongbao_invite"); + String value = configTaoLiJinService.getValueByKey("hongbao_invite",null); if (StringUtil.isNullOrEmpty(value)) { throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�"); } @@ -280,7 +285,7 @@ throw new UserTaoLiJinOriginException(1, "鐢ㄦ埛鏈櫥褰�"); } - String value = configTaoLiJinService.getValueByKey("hongbao_share"); + String value = configTaoLiJinService.getValueByKey("hongbao_share",null); if (StringUtil.isNullOrEmpty(value)) { throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�"); } @@ -372,6 +377,7 @@ // 绾㈠寘鏄庣粏 userTaoLiJinDetailService.createAddDetail(taoLiJinOrigin); + // 娑堟伅 executor.execute(new Runnable() { @Override @@ -398,65 +404,165 @@ @Override public void overdueHongBao(Long uid) { - // 15澶╁墠杩囨湡 - Date date = null; + if (uid == null) { + return; + } + + // 15澶╁墠杩囨湡- 闈炵瓑绾х孩鍖� try { - date = DateUtil.reduceDay(15, new Date()); + Date date = DateUtil.reduceDay(14, new Date()); + List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJin(uid, date); + executeOverdueHongBao(uid, date, list); } catch (ParseException e) { e.printStackTrace(); } - if (date == null) { - return; + // 30澶╁墠杩囨湡 - 绛夌骇绾㈠寘 + try { + Date date = DateUtil.reduceDay(29, new Date()); + List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJinByRank(uid, date); + executeOverdueHongBao(uid, date, list); + } catch (ParseException e) { + e.printStackTrace(); } - - List<UserTaoLiJinOrigin> list = userTaoLiJinOriginMapper.getOverdueTaoLiJin(uid, date); + } + + + public void executeOverdueHongBao(Long uid, Date date, List<UserTaoLiJinOrigin> list) { if (list == null || list.size() == 0) { return; } - + BigDecimal total = new BigDecimal(0); - for (UserTaoLiJinOrigin userTaoLiJinOrigin: list) { - + for (UserTaoLiJinOrigin userTaoLiJinOrigin : list) { + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm"); + String time = sd.format(userTaoLiJinOrigin.getCreateTime()); + + BigDecimal moneySurplus = userTaoLiJinOrigin.getMoneySurplus(); + total = MoneyBigDecimalUtil.add(total, moneySurplus); + + String rightsId = null; + boolean refund = false; + TaoLiJinOriginEnum originEnum = userTaoLiJinOrigin.getOrigin(); + if (TaoLiJinOriginEnum.refund.equals(originEnum)) { + refund = true; + rightsId = userTaoLiJinOrigin.getRightsId(); + } + UserTaoLiJinOrigin origin = new UserTaoLiJinOrigin(); origin.setId(userTaoLiJinOrigin.getId()); origin.setMoneySurplus(new BigDecimal(0)); origin.setUpdateTime(new Date()); userTaoLiJinOriginMapper.updateByPrimaryKeySelective(origin); - - total = MoneyBigDecimalUtil.add(total, userTaoLiJinOrigin.getMoneySurplus()); + + if (refund) { + UserTaoLiJinReport report = userTaoLiJinReportService.selectByPrimaryKey(rightsId); + Date shareTime = null; + if (report == null) { + shareTime = date; + } else { + shareTime = report.getCreateTime(); + } + + // 娑堟伅 + MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO(); + content.setState("绾㈠寘鏀跺洖"); + content.setSource("浜嶽" + sd.format(shareTime) + "]鍒涘缓鐨勫垎浜湭琚鍙栭儴鍒�"); + content.setTimeDesc("閫�鍥炰簬" + time); + content.setMoney(moneySurplus); + content.setReason("鏈瑪閫�鍥炴帹骞跨孩鍖呬粠閫�鍥炴棩璧疯嚦浠婂苟鏈骇鐢熷垎浜褰�"); + content.setResult("闀挎湡鏈娇鐢ㄦ敹鍥�"); + userOtherMsgNotificationService.taoLiJinMsg(uid, "濡傛湁鐤戦棶璇疯仈绯讳汉宸ュ鏈�", content); + + } else { + // 娑堟伅 + MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO(); + content.setState("绾㈠寘鏀跺洖"); + content.setSource(originEnum.getDesc()); + content.setTimeDesc("鑾峰緱浜�" + time); + content.setMoney(moneySurplus); + content.setReason("鏈瑪鎺ㄥ箍绾㈠寘浠庤幏寰楁棩璧疯嚦浠婂苟鏈骇鐢熷垎浜褰�"); + content.setResult("闀挎湡鏈娇鐢ㄦ敹鍥�"); + userOtherMsgNotificationService.taoLiJinMsg(uid, "濡傛湁鐤戦棶璇疯仈绯讳汉宸ュ鏈�", content); + } } - + + // 鐢ㄦ埛鍓╀綑娣樼ぜ閲� + UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid); + if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) { + return; + } + + UserMoneyExtra updateExtra = new UserMoneyExtra(); + updateExtra.setUid(uid); + + BigDecimal tljSelf = userMoneyExtra.getTljSelf(); + if (tljSelf != null && tljSelf.compareTo(new BigDecimal(0)) > 0) { // 鍓╀綑娣樼ぜ閲�-- 鑷喘 + BigDecimal sub = MoneyBigDecimalUtil.sub(tljSelf, total); + if (sub.compareTo(new BigDecimal(0)) > 0) { + updateExtra.setTljSelf(sub); + } else { + updateExtra.setTljSelf(new BigDecimal(0)); + } + } + updateExtra.setTlj(MoneyBigDecimalUtil.sub(userMoneyExtra.getTlj(), total)); + updateExtra.setUpdateTime(new Date()); + userMoneyExtraService.updateByPrimaryKeySelective(updateExtra); + // 鎻掑叆鏄庣粏 UserTaoLiJinDetail detail = new UserTaoLiJinDetail(); detail.setUid(uid); detail.setMoney(new BigDecimal("-" + total.toString())); detail.setTitle(TaoLiJinDetailTypeEnum.sendBack.getDesc()); detail.setType(TaoLiJinDetailTypeEnum.sendBack); - detail.setCreateTime(date); + detail.setCreateTime(new Date()); userTaoLiJinDetailService.insertSelective(detail); - - // 娑堟伅 - final BigDecimal totalMoney = total; - executor.execute(new Runnable() { - @Override - public void run() { - try { - MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO(); - content.setState("绾㈠寘鎵i櫎"); - content.setSource("15澶╁唴鏈骇鐢熻繃鎺ㄥ箍绾㈠寘鍒嗕韩璁板綍"); - content.setMoney(totalMoney); - userOtherMsgNotificationService.taoLiJinMsg(uid, "娓呴櫎鍚庢棤娉曟仮澶�", content); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - }); } - + + @Override public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) { return userTaoLiJinOriginMapper.getSurplusLiJin(uid); } + + @Override + @Transactional + public void addInviteWinMoneyByHand(Long uid, String inviteName, Date date) throws UserTaoLiJinOriginException { + if (uid == null || StringUtil.isNullOrEmpty(inviteName)) { + throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); + } + + String value = configTaoLiJinService.getValueByKey("hongbao_invite",null); + if (StringUtil.isNullOrEmpty(value)) { + throw new UserTaoLiJinOriginException(1, "绯荤粺绾㈠寘涓嶅瓨鍦�"); + } + BigDecimal money = new BigDecimal(value); + + // 娣诲姞鐢ㄦ埛绾㈠寘 + userMoneyExtraService.addTaoLiJin(uid, money, false); + + // 娣诲姞鏂板璁板綍 + UserTaoLiJinOrigin taoLiJinOrigin = new UserTaoLiJinOrigin(); + taoLiJinOrigin.setUid(uid); + taoLiJinOrigin.setType(1); + taoLiJinOrigin.setOrigin(TaoLiJinOriginEnum.inviteWin); + taoLiJinOrigin.setMoney(money); + taoLiJinOrigin.setMoneySurplus(money); + taoLiJinOrigin.setCreateTime(date); + taoLiJinOrigin.setUpdateTime(date); + taoLiJinOrigin.setRemark(TaoLiJinOriginEnum.inviteWin.getDesc()); + userTaoLiJinOriginMapper.insertSelective(taoLiJinOrigin); + + // 鏄庣粏 + UserTaoLiJinDetail detail = new UserTaoLiJinDetail(); + detail.setUid(uid); + detail.setMoney(money); + detail.setType(TaoLiJinDetailTypeEnum.add); + detail.setTitle(TaoLiJinDetailTypeEnum.add.getDesc()); + detail.setDescInfo("鏉ユ簮锛�" + TaoLiJinOriginEnum.inviteWin.getDesc()); + detail.setCreateTime(date); + userTaoLiJinDetailService.insertSelective(detail); + } + } -- Gitblit v1.8.0