| | |
| | | package cn.lili.modules.lmk.service.impl; |
| | | |
| | | import cn.lili.common.properties.RocketmqCustomProperties; |
| | | import cn.lili.common.security.context.UserContext; |
| | | import cn.lili.common.utils.StringUtils; |
| | | import cn.lili.modules.lmk.domain.query.PrizeRecordTimeQuery; |
| | |
| | | import cn.lili.modules.lmk.enums.general.PrizeGrantStatusEnums; |
| | | import cn.lili.modules.lmk.enums.general.PrizeStatusEnum; |
| | | import cn.lili.modules.order.order.entity.dto.PrizeRecordExportDetailDTO; |
| | | import cn.lili.rocketmq.RocketmqSendCallbackBuilder; |
| | | import cn.lili.utils.COSUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import cn.lili.modules.lmk.domain.entity.PrizeRecord; |
| | | import cn.lili.modules.lmk.mapper.PrizeRecordMapper; |
| | |
| | | import org.apache.poi.ss.usermodel.Row; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.apache.rocketmq.spring.core.RocketMQTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import lombok.RequiredArgsConstructor; |
| | | import cn.lili.utils.PageUtil; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.support.TransactionSynchronization; |
| | | import org.springframework.transaction.support.TransactionSynchronizationManager; |
| | | import org.springframework.util.Assert; |
| | | |
| | | import javax.servlet.ServletOutputStream; |
| | |
| | | private final PrizeRecordMapper prizeRecordMapper; |
| | | |
| | | private final COSUtil cosUtil; |
| | | |
| | | private final RocketmqCustomProperties rocketmqCustomProperties; |
| | | private final RocketMQTemplate rocketMQTemplate; |
| | | @Override |
| | | public void queryExportStock(HttpServletResponse response, PrizeRecordQuery query){ |
| | | List<PrizeRecordVO> list = baseMapper.getExportData(query); |
| | |
| | | public List<PrizeRecordTimeVO> getPrizeRecordListByTime(PrizeRecordTimeQuery query) { |
| | | return baseMapper.getPrizeRecordListByTime(query); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result push(String id) { |
| | | PrizeRecord prizeRecord = baseMapper.selectById(id); |
| | | if (prizeRecord != null){ |
| | | String distributeStatus = prizeRecord.getDistributeStatus(); |
| | | String prizeStatus = prizeRecord.getPrizeStatus(); |
| | | |
| | | if (StringUtils.isNotBlank(distributeStatus) && |
| | | StringUtils.isNotBlank(prizeStatus) && |
| | | PrizeStatusEnum.WIN.name().equals(prizeStatus) && |
| | | PrizeDistributeStatusEnum.WAIT.name().equals(distributeStatus)){ |
| | | |
| | | TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { |
| | | @Override |
| | | public void afterCommit() { |
| | | String destination = rocketmqCustomProperties.getPrizeTopic() + ":" + PrizeStatusEnum.WIN.name(); |
| | | rocketMQTemplate.asyncSend(destination, JSON.toJSONString(prizeRecord), RocketmqSendCallbackBuilder.commonCallback()); |
| | | } |
| | | }); |
| | | return Result.ok().data("已发放补偿"); |
| | | }else { |
| | | throw new RuntimeException("用户领取记录为null或错误状态,补偿发放失败:" +prizeRecord); |
| | | } |
| | | |
| | | }else{ |
| | | return Result.error().data("补偿发放失败"); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |