package com.fdkankan.pay.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.pay.entity.Order; import com.fdkankan.pay.entity.PayServe; import com.fdkankan.pay.mapper.IOrderMapper; import com.fdkankan.pay.service.IOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.pay.service.IPayServeService; import com.fdkankan.pay.util.CacheUtil; import com.fdkankan.pay.util.OrderSnUtil; import com.fdkankan.rabbitmq.util.RabbitMqProducer; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.Map; /** *

* 服务实现类 *

* * @author * @since 2023-04-12 */ @Service public class OrderServiceImpl extends ServiceImpl implements IOrderService { @Autowired OrderSnUtil orderSnUtil; @Autowired IPayServeService payServeService; @Autowired RabbitMqProducer rabbitMqProducer; @Override public Order createOrderByMqMsg(String msg) { msg = StringEscapeUtils.unescapeJava(msg); Order order = JSONObject.parseObject(msg, Order.class); return this.createOrder(order); } @Override public Order createOrder(Order order) { if(StringUtils.isBlank(order.getServeName())){ return null; } PayServe payServe = payServeService.getByServeName(order.getServeName()); if(payServe == null ){ return null; } order.setOrderId(null); order.setServeId(payServe.getId()); String orderSn = orderSnUtil.getOrderSn(); order.setOrderSn(orderSn); this.save(order); return order; } @Override public Order getByOrderSn(String orderSn) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Order::getOrderSn,orderSn); return this.getOne(wrapper); } @Override public void payResult(Order order, Boolean payFlag, String trade_no,String openId) { if(order.getPayStatus() != 0){ return; } order.setPayStatus(payFlag ? 1:2); order.setTradeNo(trade_no); order.setOpenId(openId); order.setPayTime(new Date()); order.setUpdateTime(new Date()); this.updateById(order); Map map = BeanUtil.beanToMap(order); rabbitMqProducer.sendByWorkQueue(CacheUtil.orderPayResultQueue,map); } }