From 8ce7c720e4e7a604b0ff770349b5556f39d37759 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 13 九月 2021 11:44:38 +0800
Subject: [PATCH] 好省呗应用兼容
---
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java | 440 ++++++++++++++++++++++++++++--------------------------
1 files changed, 226 insertions(+), 214 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 1b06307..6489f97 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,214 +1,226 @@
-package com.yeshi.fanli.service.impl.redpack;
-
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-import org.omg.CORBA.LongHolder;
-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;
-import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
-import com.yeshi.fanli.entity.redpack.RedPackDetail;
-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.util.StringUtil;
-import com.yeshi.fanli.util.TimeUtil;
-import com.yeshi.fanli.util.factory.RedPackDetailFactory;
-
-@Service
-public class RedPackExchangeServiceImpl implements RedPackExchangeService {
-
- @Resource
- private RedPackExchangeMapper redPackExchangeMapper;
-
- @Resource
- private RedPackConfigService redPackConfigService;
-
- @Resource
- private RedPackBalanceService redPackBalanceService;
-
- @Resource
- private UserMoneyService userMoneyService;
-
- @Resource
- private RedPackDetailService redPackDetailService;
-
- @Resource
- private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
-
-
- @Override
- public List<RedPackExchange> query(Integer start, Integer count, String key, Integer state){
- return redPackExchangeMapper.query(start, count, key, state);
- }
-
- @Override
- public Long count(String key, Integer state){
- return redPackExchangeMapper.count(key, state);
- }
-
- @Override
- public Long countByUidAndState(long uid, Integer state) {
- return redPackExchangeMapper.countByUidAndState(uid, state);
- }
-
- @Override
- public BigDecimal countMoneyByUidAndState(Long uid, Integer state){
- return redPackExchangeMapper.countMoneyByUidAndState(uid, state);
- }
-
- @Override
- public RedPackExchange selectByPrimaryKey(long id){
- return redPackExchangeMapper.selectByPrimaryKey(id);
- }
-
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- 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 (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();
-
- // 鎻愮幇鐢宠
- RedPackExchange exchange = new RedPackExchange();
- exchange.setUid(uid);
- exchange.setMoney(amount);
- exchange.setState(RedPackExchange.STATE_INIT);
- exchange.setCreateTime(nowDate);
- redPackExchangeMapper.insertSelective(exchange);
-
- // 鍑忓皯绾㈠寘
- try {
- redPackBalanceService.subRedPack(uid, amount, RedPackDetailFactory.createExchange(exchange));
- } catch (Exception e) {
- throw new RedPackExchangeException(1, "绾㈠寘淇℃伅寮傚父");
- }
- }
-
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void passExchange(final long id, AdminUser admin) throws RedPackExchangeException {
- RedPackExchange record = redPackExchangeMapper.selectByPrimaryKey(id);
- if (record == null)
- throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪");
-
- if (RedPackExchange.STATE_INIT != record.getState())
- throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�");
-
- Date nowDate = new Date();
- record.setAuditId(admin.getId());
- record.setAuditTime(nowDate);
- record.setState(RedPackExchange.STATE_SUCCESS);
- redPackExchangeMapper.updateByPrimaryKeySelective(record);
-
- // 璧勯噾鏄庣粏-娣诲姞璧勯噾
- UserMoneyDetail detail = new UserMoneyDetail();
- detail.setCreateTime(new Date());
- detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.redPackExchange.name() + ":" + record.getId()));
- detail.setMoney(record.getMoney());
- detail.setType(UserMoneyDetailTypeEnum.redPackExchange);
- detail.setTitle(UserMoneyDetailTypeEnum.redPackExchange.getDesc());
- detail.setDescInfo("浜�"+ TimeUtil.formatDate(record.getCreateTime()) +"鎻愮幇");
- detail.setUpdateTime(new Date());
- detail.setUserInfo(new UserInfo(record.getUid()));
-
- // 娣诲姞璧勯噾
- userMoneyService.addUserMoney(record.getUid(), record.getMoney(), detail);
-
- // 鏇存柊绾㈠寘鎻愮幇鏄庣粏
- try {
- 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);
- }
-
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void rejectExchange(long id, String reason, AdminUser admin) throws RedPackExchangeException {
- RedPackExchange record = redPackExchangeMapper.selectByPrimaryKey(id);
- if (record == null)
- throw new RedPackExchangeException(1,"鐢宠璁板綍宸蹭笉瀛樺湪");
-
- if (RedPackExchange.STATE_INIT != record.getState())
- throw new RedPackExchangeException(1,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�");
-
- record.setReason(reason);
- record.setAuditTime(new Date());
- record.setAuditId(admin.getId());
- record.setState(RedPackExchange.STATE_REJECT);
- redPackExchangeMapper.updateByPrimaryKeySelective(record);
-
- // 閫�鍥炵孩鍖�
- try {
- redPackBalanceService.addRedPack(record.getUid(), record.getMoney(), RedPackDetailFactory.createExchange(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);
- }
-
-}
+package com.yeshi.fanli.service.impl.redpack;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+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;
+import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
+import com.yeshi.fanli.entity.redpack.RedPackDetail;
+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 org.yeshi.utils.TimeUtil;
+import com.yeshi.fanli.util.factory.RedPackDetailFactory;
+
+@Service
+public class RedPackExchangeServiceImpl implements RedPackExchangeService {
+
+ @Resource
+ private RedPackExchangeMapper redPackExchangeMapper;
+
+ @Resource
+ private RedPackConfigService redPackConfigService;
+
+ @Resource
+ private RedPackBalanceService redPackBalanceService;
+
+ @Resource
+ private UserMoneyService userMoneyService;
+
+ @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) {
+ return redPackExchangeMapper.query(start, count, key, state);
+ }
+
+ @Override
+ public Long count(String key, Integer state) {
+ return redPackExchangeMapper.count(key, state);
+ }
+
+ @Override
+ public Long countByUidAndState(long uid, Integer state) {
+ return redPackExchangeMapper.countByUidAndState(uid, state);
+ }
+
+ @Override
+ public BigDecimal countMoneyByUidAndState(Long uid, Integer state) {
+ return redPackExchangeMapper.countMoneyByUidAndState(uid, state);
+ }
+
+ @Override
+ public RedPackExchange selectByPrimaryKey(long id) {
+ return redPackExchangeMapper.selectByPrimaryKey(id);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void exchangeCash(Long uid, BigDecimal amount) throws RedPackExchangeException {
+ if (uid == null || amount == null)
+ throw new RedPackExchangeException(1, "鍙傛暟涓嶆纭�");
+
+ 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 + "鍏�");
+
+ 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);
+ exchange.setMoney(amount);
+ exchange.setState(RedPackExchange.STATE_INIT);
+ exchange.setCreateTime(nowDate);
+ redPackExchangeMapper.insertSelective(exchange);
+
+ // 鍑忓皯绾㈠寘
+ try {
+ redPackBalanceService.subRedPack(uid, amount, RedPackDetailFactory.createExchange(exchange));
+ } catch (Exception e) {
+ throw new RedPackExchangeException(1, "绾㈠寘淇℃伅寮傚父");
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void passExchange(final long id, AdminUser admin) throws RedPackExchangeException {
+ RedPackExchange record = redPackExchangeMapper.selectByPrimaryKey(id);
+ if (record == null)
+ throw new RedPackExchangeException(1, "鐢宠璁板綍宸蹭笉瀛樺湪");
+
+ 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);
+ record.setState(RedPackExchange.STATE_SUCCESS);
+ redPackExchangeMapper.updateByPrimaryKeySelective(record);
+
+ // 璧勯噾鏄庣粏-娣诲姞璧勯噾
+ UserMoneyDetail detail = new UserMoneyDetail();
+ detail.setCreateTime(new Date());
+ detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.redPackExchange.name() + ":" + record.getId()));
+ detail.setMoney(record.getMoney());
+ detail.setType(UserMoneyDetailTypeEnum.redPackExchange);
+ detail.setTitle(UserMoneyDetailTypeEnum.redPackExchange.getDesc());
+ detail.setDescInfo("浜�" + TimeUtil.formatDate(record.getCreateTime()) + "鎻愮幇");
+ detail.setUpdateTime(new Date());
+ detail.setUserInfo(new UserInfo(record.getUid()));
+
+ // 娣诲姞璧勯噾
+ userMoneyService.addUserMoney(record.getUid(), record.getMoney(), detail);
+
+ // 鏇存柊绾㈠寘鎻愮幇鏄庣粏
+ try {
+ 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);
+
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void rejectExchange(long id, String reason, AdminUser admin) throws RedPackExchangeException {
+ RedPackExchange record = redPackExchangeMapper.selectByPrimaryKey(id);
+ if (record == null)
+ throw new RedPackExchangeException(1, "鐢宠璁板綍宸蹭笉瀛樺湪");
+
+ if (RedPackExchange.STATE_INIT != record.getState())
+ throw new RedPackExchangeException(1, "璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�");
+
+ record.setReason(reason);
+ record.setAuditTime(new Date());
+ record.setAuditId(admin.getId());
+ record.setState(RedPackExchange.STATE_REJECT);
+ redPackExchangeMapper.updateByPrimaryKeySelective(record);
+
+ // 閫�鍥炵孩鍖�
+ try {
+ 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