| | |
| | | |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.GoodsToLevelEnums; |
| | | import cc.mrbird.febs.common.enumerates.OrderStatusEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.mall.entity.MallMember; |
| | | import cc.mrbird.febs.mall.entity.MallMqRecord; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.entity.MallOrderItem; |
| | | import cc.mrbird.febs.mall.mapper.MallMqRecordMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; |
| | | import cc.mrbird.febs.mall.service.ICommonService; |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cc.mrbird.febs.pay.properties.WxPayProperties; |
| | | import cc.mrbird.febs.pay.service.IPayService; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | |
| | | public class WxPayServiceImpl implements IPayService { |
| | | |
| | | @Autowired |
| | | private ICommonService commonService; |
| | | |
| | | @Autowired |
| | | private MallOrderInfoMapper orderInfoMapper; |
| | | |
| | | @Autowired |
| | |
| | | private WxPayProperties wxPayProperties; |
| | | |
| | | @Autowired |
| | | private MallMqRecordMapper mallMqRecordMapper; |
| | | private AgentProducer agentProducer; |
| | | |
| | | @Autowired |
| | | private AgentProducer agentProducer; |
| | | private IMallAchieveService mallAchieveService; |
| | | |
| | | @Autowired |
| | | private IApiMallMemberService mallMemberService; |
| | | |
| | | @Autowired |
| | | private IApiMallMemberWalletService memberWalletService; |
| | | |
| | | @Value("${spring.profiles.active}") |
| | | private String active; |
| | |
| | | orderInfo.setPayTradeNo(params.get("transaction_id")); |
| | | orderInfoMapper.updateById(orderInfo); |
| | | |
| | | commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.WECHAT.getValue()); |
| | | MallMember member = mallMemberService.getById(orderInfo.getMemberId()); |
| | | |
| | | /** |
| | | * 插入一条待处理记录 |
| | | * mq处理之后,更新状态 |
| | | */ |
| | | MallMqRecord mallMqRecord = new MallMqRecord(); |
| | | mallMqRecord.setOrderId(orderInfo.getId()); |
| | | mallMqRecord.setState(2); |
| | | mallMqRecord.setRetryTimes(2); |
| | | mallMqRecordMapper.insert(mallMqRecord); |
| | | //发送补贴消息 |
| | | agentProducer.sendPerkMoneyMsg(orderInfo.getId()); |
| | | // 商品级别 会员/代理/股东 |
| | | int goodsLevel = 0; |
| | | BigDecimal score = BigDecimal.ZERO; |
| | | for (MallOrderItem item : orderInfo.getItems()) { |
| | | // 计算静态倍数 |
| | | if(item.getIsNormal() == 2) { |
| | | score = score.add(item.getPrice().multiply(item.getStaticMulti())); |
| | | } |
| | | |
| | | // 判断会员层级 |
| | | if (item.getIsNormal() == 2 && goodsLevel < item.getGoodsLevel()) { |
| | | goodsLevel = item.getGoodsLevel(); |
| | | } |
| | | |
| | | mallAchieveService.add(item.getId()); |
| | | } |
| | | |
| | | // 根据用户购买的商品设置其等级 |
| | | member.setLevel(GoodsToLevelEnums.getLevelByAccountLevel(goodsLevel)); |
| | | member.setAccountLevel(goodsLevel); |
| | | this.mallMemberService.updateById(member); |
| | | |
| | | memberWalletService.add(score, member.getId(), "score"); |
| | | |
| | | //发送代理自动升级消息 |
| | | agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId()); |
| | | //发送直推返利消息 |
| | | agentProducer.sendOrderReturn(orderInfo.getId()); |
| | | // 发送分红消息 |
| | | agentProducer.sendOrderBonus(orderInfo.getId()); |
| | | } |
| | | } |