package com.gear.customer.swx.rabbitmq;
|
|
import com.gear.common.core.redis.RedisCache;
|
import com.gear.customer.swx.config.DelayQueueRabbitConfig;
|
import com.gear.customer.swx.vo.response.SwxUserInfoVo;
|
import com.gear.swx.domain.SwxMarket;
|
import com.gear.swx.domain.SwxOptionsOrder;
|
import com.gear.swx.domain.SwxUser;
|
import com.gear.swx.service.ISwxMarketService;
|
import com.gear.swx.service.ISwxOptionsOrderService;
|
import com.gear.swx.service.ISwxUserService;
|
import org.springframework.amqp.core.Message;
|
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.TimeUnit;
|
|
@Component
|
@RabbitListener(queues = DelayQueueRabbitConfig.DLX_QUEUE)
|
public class DirectReceiver {
|
@Autowired
|
RabbitTemplate rabbitTemplate;
|
|
@Autowired
|
private ISwxOptionsOrderService swxOptionsOrderService;
|
|
@Autowired
|
private RedisCache redisCache;
|
|
@Autowired
|
private ISwxMarketService swxMarketService;
|
|
@Autowired
|
private ISwxUserService swxUserService;
|
@RabbitHandler
|
public void process(Map<String,Object> messageMap) {
|
System.out.println("消息体内容为:"+messageMap);
|
System.out.println("接收消息时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
String id = (String)messageMap.get("id");
|
Integer type = (Integer) messageMap.get("istrue");
|
String userId = (String)messageMap.get("userId");
|
if (type == 1){
|
try{
|
SwxOptionsOrder swxOptionsOrder = swxOptionsOrderService.getById(id);
|
SwxMarket swxMarket = swxMarketService.getById(swxOptionsOrder.getMarketId());
|
System.out.println("当前对象:"+swxOptionsOrder);
|
swxOptionsOrder.setStatus(1);
|
swxOptionsOrder.setEndPriceTrue(new BigDecimal(redisCache.getCacheObject(swxMarket.getCode()+"CurrPrice")+""));
|
if (swxOptionsOrder.getResultType() == 2){
|
swxOptionsOrder.setIncome(BigDecimal.ZERO.subtract(swxOptionsOrder.getAmount()));
|
}
|
swxOptionsOrderService.update(swxOptionsOrder);
|
|
SwxUser swxUser = swxUserService.getById(swxOptionsOrder.getUserId());
|
if (swxUser != null){
|
BigDecimal amount = null;
|
//判断如果赢了的话,修改用户余额
|
if(swxOptionsOrder.getResultType() == 1){
|
BigDecimal money = swxOptionsOrder.getAmount().add(swxOptionsOrder.getIncome());
|
amount = swxUser.getAmount().add(money);
|
}
|
BigDecimal profit = swxUser.getProfit().add(swxOptionsOrder.getIncome());
|
swxUserService.updateMoney(swxUser.getId(),amount,profit);
|
}
|
System.out.println("后续处理成功!");
|
}catch (Exception e){
|
System.out.println("消息监听处理失败。。。");
|
System.out.println(e.getMessage());
|
}
|
}else{
|
try {
|
SwxOptionsOrder swxOptionsOrder = swxOptionsOrderService.getById(id);
|
SwxMarket swxMarket = swxMarketService.getById(swxOptionsOrder.getMarketId());
|
System.out.println("当前对象:"+swxOptionsOrder);
|
swxOptionsOrder.setStatus(1);
|
swxOptionsOrder.setEndPriceTrue(redisCache.getCacheObject(swxMarket.getCode()+"CurrPrice")== null ? BigDecimal.ZERO : new BigDecimal(redisCache.getCacheObject(swxMarket.getCode()+"CurrPrice")+""));
|
if (swxOptionsOrder.getResultType() == 2){
|
swxOptionsOrder.setIncome(BigDecimal.ZERO.subtract(swxOptionsOrder.getAmount()));
|
}
|
swxOptionsOrderService.update(swxOptionsOrder);
|
//判断如果赢了的话,修改用户余额
|
if(swxOptionsOrder.getResultType() == 1){
|
BigDecimal money = swxOptionsOrder.getAmount().add(swxOptionsOrder.getIncome());
|
SwxUserInfoVo infoVo = redisCache.getCacheObject("SWX-CUSTOMER-VERTURAL-"+userId);
|
if (infoVo != null){
|
Long userExprie = redisCache.getExpire("SWX-CUSTOMER-VERTURAL-"+userId);
|
infoVo.setVirtuallyAmount(infoVo.getVirtuallyAmount().add(money));
|
redisCache.setCacheObject("SWX-CUSTOMER-VERTURAL-"+userId,infoVo,userExprie,TimeUnit.SECONDS);
|
}
|
}
|
System.out.println("后续处理成功!");
|
}catch (Exception e){
|
System.out.println("消息监听处理失败。。。");
|
System.out.println( e.toString());
|
}
|
}
|
|
|
|
}
|
|
}
|