From e6764831a890de26fcfebb4fb8f3a22e9f8cc816 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 27 八月 2019 16:09:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java | 251 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 224 insertions(+), 27 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..89e088c 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 @@ -14,15 +14,18 @@ import org.yeshi.utils.DateUtil; import com.yeshi.fanli.dao.mybatis.tlj.UserTaoLiJinOriginMapper; +import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO; import com.yeshi.fanli.dto.msg.MsgOtherTaoLiJinContentDTO; import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail; +import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum; 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 +35,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 +70,9 @@ @Resource private UserTaoLiJinRecordService userTaoLiJinRecordService; + + @Resource + private UserTaoLiJinReportService userTaoLiJinReportService; @Override @@ -143,7 +150,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 +209,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 +248,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 +287,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 +379,7 @@ // 绾㈠寘鏄庣粏 userTaoLiJinDetailService.createAddDetail(taoLiJinOrigin); + // 娑堟伅 executor.execute(new Runnable() { @Override @@ -393,70 +401,259 @@ }); } - - @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(new Date()); + userTaoLiJinDetailService.insertSelective(detail); + } + + + @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); + } + + + @Override + @Transactional + public void exchangeMoney(Long uid, BigDecimal money) throws UserTaoLiJinOriginException{ + if (uid == null || money == null) { + throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); + } + // 娣诲姞鐢ㄦ埛绾㈠寘 + userMoneyExtraService.addTaoLiJin(uid, money, false); + // 娣诲姞鏂板璁板綍 + UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.exchange); + // 绾㈠寘鏄庣粏 + userTaoLiJinDetailService.createAddDetail(origin); + } + + + @Override + @Transactional + public UserTaoLiJinOrigin receiveFriendsGive(Long uid, BigDecimal money) throws UserTaoLiJinOriginException{ + if (uid == null || money == null) { + throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); + } + // 娣诲姞绾㈠寘浣欓 + userMoneyExtraService.addTaoLiJin(uid, money, false); + // 娣诲姞鏂板璁板綍 + UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.friendsGive); + // 绾㈠寘鏄庣粏 + userTaoLiJinDetailService.createAddDetail(origin); // 娑堟伅 - 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); + content.setState("绾㈠寘澧炲姞"); + content.setSource("濂藉弸璧犻��"); + content.setMoney(money); + userOtherMsgNotificationService.taoLiJinMsg(uid, "", content); } catch (Exception e) { LogHelper.errorDetailInfo(e); } } }); + return origin; } - + + + @Override - public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) { - return userTaoLiJinOriginMapper.getSurplusLiJin(uid); + @Transactional + public void giveSendBack(Long uid, UserTaoLiJinGiveRecord record) throws UserTaoLiJinOriginException{ + if (uid == null || record == null) { + throw new UserTaoLiJinOriginException(1, "鍙傛暟涓嶈兘涓虹┖"); + } + + BigDecimal money = record.getAmount(); + + // 娣诲姞绾㈠寘浣欓 + userMoneyExtraService.addTaoLiJin(uid, money, false); + // 娣诲姞鏂板璁板綍 + UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.giveSendBack); + // 绾㈠寘鏄庣粏 + userTaoLiJinDetailService.createAddDetail(origin); + UserTaoLiJinDetail detail = new UserTaoLiJinDetail(); + detail.setUid(uid); + detail.setMoney(money); + detail.setType(TaoLiJinDetailTypeEnum.giveBack); + detail.setTitle(TaoLiJinDetailTypeEnum.giveBack.getDesc()); + detail.setCreateTime(new Date()); + userTaoLiJinDetailService.insertSelective(detail); + + + executor.execute(new Runnable() { + @Override + public void run() { + // 閫�鍥炴秷鎭� + String beiZhu = "璇峰埌鎴戠殑-鎺ㄥ箍绾㈠寘鏌ョ湅"; + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO(); + msgOther.setType(MsgOtherGiveContentDTO.TYEP_TLJ); + msgOther.setTitle("璧犻�佹帹骞跨孩鍖呴��鍥�"); + msgOther.setGiveType("浣犺禒閫佺殑"+ money + "鎺ㄥ箍绾㈠寘鏈鎴愬姛棰嗗彇"); + msgOther.setGiveTime(sd.format(record.getGiveTime())); + msgOther.setReturnTime(sd.format(new Date())); + userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther); + } + }); + } } -- Gitblit v1.8.0