From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java | 455 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 226 insertions(+), 229 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 5843a70..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,229 +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.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.RedPackBalanceException; -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 = null; - try { - balance = redPackBalanceService.getBalance(uid); - } catch (RedPackBalanceException e1) { - throw new RedPackExchangeException(1, e1.getMsg()); - } - - 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,"璇ョ敵璇峰凡琚鐞嗭紝璇峰埛鏂�"); - - 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,"鏇存柊鎻愮幇鏄庣粏鍑洪敊"); - } - - try { - //娑堟伅 - 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); - } catch (RedPackBalanceException e) { - throw new RedPackExchangeException(1, e.getMsg()); - } - } - - - @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); - } - -} +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