From 626d711cb15896055c13fe344eb7fcc824589715 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 19 十二月 2019 15:38:42 +0800 Subject: [PATCH] 帮助中心 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java | 82 +++++++++++++++++++++++++++++++--------- 1 files changed, 63 insertions(+), 19 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java index 00dcbf9..2b816ec 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java @@ -1,6 +1,7 @@ package com.yeshi.fanli.service.impl.redpack; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -9,7 +10,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.google.gson.Gson; import com.yeshi.fanli.dao.mybatis.redpack.RedPackExchangeMapper; +import com.yeshi.fanli.dto.msg.MsgRedPackExchangeContentDTO; +import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.money.UserMoneyDetail; @@ -18,11 +22,14 @@ import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum; import com.yeshi.fanli.entity.redpack.RedPackExchange; import com.yeshi.fanli.exception.redpack.RedPackExchangeException; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.money.UserMoneyService; +import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; import com.yeshi.fanli.service.inter.redpack.RedPackDetailService; import com.yeshi.fanli.service.inter.redpack.RedPackExchangeService; +import com.yeshi.fanli.service.inter.redpack.RedPackForbidService; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.RedPackDetailFactory; @@ -45,6 +52,12 @@ @Resource private RedPackDetailService redPackDetailService; + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + + @Resource + private RedPackForbidService redPackForbidService; + @Override public List<RedPackExchange> query(Integer start, Integer count, String key, Integer state){ @@ -57,19 +70,13 @@ } @Override - public List<Long> countState(long uid){ - return redPackExchangeMapper.countState(uid); - } - - - @Override - public List<BigDecimal> countMoneyState(long uid){ - return redPackExchangeMapper.countMoneyState(uid); + public Long countByUidAndState(long uid, Integer state) { + return redPackExchangeMapper.countByUidAndState(uid, state); } @Override - public BigDecimal countMoneyByState(Long uid, Integer state){ - return redPackExchangeMapper.countMoneyByState(uid, state); + public BigDecimal countMoneyByUidAndState(Long uid, Integer state){ + return redPackExchangeMapper.countMoneyByUidAndState(uid, state); } @Override @@ -83,24 +90,32 @@ public void exchangeCash(Long uid, BigDecimal amount) throws RedPackExchangeException { if (uid == null || amount == null) throw new RedPackExchangeException(1, "鍙傛暟涓嶆纭�"); - - String extractBanlenMin = redPackConfigService.getValueByKey("extract_banlen_min"); - BigDecimal balance = redPackBalanceService.getBalance(uid); + if(redPackForbidService.verifyForbid(uid)) + throw new RedPackExchangeException(1, "绾㈠寘鍔熻兘宸茶灏佺"); + + String extractBanlenMin = redPackConfigService.getValueByKey("extract_banlen_min"); + + BigDecimal balance = redPackBalanceService.getBalance(uid); if (balance == null || balance.compareTo(new BigDecimal(extractBanlenMin)) < 0) throw new RedPackExchangeException(1, "浣欓涓嶈冻" + extractBanlenMin + "鍏�"); if (balance.compareTo(amount) < 0) throw new RedPackExchangeException(1, "鎻愮幇浣欓涓嶈冻"); - String moneyMin = redPackConfigService.getValueByKey("extract_money_min"); String moneyMax = redPackConfigService.getValueByKey("extract_money_max"); if (amount.compareTo(new BigDecimal(moneyMin)) < 0 || amount.compareTo(new BigDecimal(moneyMax)) > 0) throw new RedPackExchangeException(1, "鎻愮幇閲戦鑷冲皯" + moneyMin + "鍏冭嚦澶�" + moneyMax + "鍏�"); - Date nowDate = new Date(); + long countToday = redPackExchangeMapper.countTodayByUid(uid); + String extractDayMax = redPackConfigService.getValueByKey("extract_day_max"); + if (!StringUtil.isNullOrEmpty(extractDayMax) && countToday >= Long.parseLong(extractDayMax)) + throw new RedPackExchangeException(1, "浠婃棩绾㈠寘鎻愮幇娆℃暟瓒呴檺"); + + + Date nowDate = new Date(); // 鎻愮幇鐢宠 RedPackExchange exchange = new RedPackExchange(); exchange.setUid(uid); @@ -125,9 +140,12 @@ if (record == null) throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪"); - if (RedPackExchange.STATE_INIT == record.getState()) + if (RedPackExchange.STATE_INIT != record.getState()) throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�"); + if(redPackForbidService.verifyForbid(record.getUid())) + throw new RedPackExchangeException(1, "绾㈠寘鍔熻兘宸茶灏佺"); + Date nowDate = new Date(); record.setAuditId(admin.getId()); record.setAuditTime(nowDate); @@ -148,14 +166,30 @@ // 娣诲姞璧勯噾 userMoneyService.addUserMoney(record.getUid(), record.getMoney(), detail); + // 鏇存柊绾㈠寘鎻愮幇鏄庣粏 try { - String identifyCode = StringUtil.Md5(RedPackDetailTypeEnum.redExchangePass.name() + ":" + record.getId()); + String identifyCode = StringUtil.Md5(RedPackDetailTypeEnum.redExchange.name() + ":" + record.getId()); RedPackDetail redPackDetail = redPackDetailService.getByIdentifyCode(identifyCode); + // 鍒涘缓鏄庣粏鏇存柊 RedPackDetail updateDetail = RedPackDetailFactory.updateExchangePass(redPackDetail.getId(), record); redPackDetailService.updateByPrimaryKeySelective(updateDetail); } catch (Exception e) { + LogHelper.errorDetailInfo(e); throw new RedPackExchangeException(1,"鏇存柊鎻愮幇鏄庣粏鍑洪敊"); } + + + //娑堟伅 + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + String beizu = "绾㈠寘鎻愮幇鎴愬姛鍚庤鍒扳�滄垜鐨�-璐︽埛浣欓鈥濅腑鏌ョ湅"; + MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO(); + dto.setTitle("绾㈠寘鎻愮幇"); + dto.setTime(sd.format(record.getCreateTime())); + dto.setHandle("浜哄伐瀹℃牳" + sd.format(new Date())); + dto.setMoney("楼" + record.getMoney().setScale(2)); + dto.setBalance("楼" + redPackBalanceService.getBalance(record.getUid())); + userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangePass, new Gson().toJson(dto), beizu); + } @@ -166,7 +200,7 @@ if (record == null) throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪"); - if (RedPackExchange.STATE_INIT == record.getState()) + if (RedPackExchange.STATE_INIT != record.getState()) throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�"); record.setReason(reason); @@ -177,10 +211,20 @@ // 閫�鍥炵孩鍖� try { - redPackBalanceService.addRedPack(record.getUid(), record.getMoney(), RedPackDetailFactory.createExchange(record)); + redPackBalanceService.addRedPack(record.getUid(), record.getMoney(), RedPackDetailFactory.createExchangeReject(record)); } catch (Exception e) { + LogHelper.errorDetailInfo(e); throw new RedPackExchangeException(1, "绾㈠寘閫�鍥炴椂鍑洪敊"); } + + //娑堟伅 + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO(); + dto.setTitle("绾㈠寘鎻愮幇"); + dto.setReason(reason); + dto.setHandle(""); // TODO 澶勭悊鏂瑰紡寰呭畾 + dto.setTime(sd.format(record.getCreateTime())); + userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangeReject, new Gson().toJson(dto), null); } } -- Gitblit v1.8.0