dev-discount
parent
e4e226583e
commit
f99097b3ee
@ -1 +1 @@ |
|||||||
package com.web.controller;
import com.hai.common.utils.*;
import com.hai.entity.HighOrder;
import com.hai.model.ResponseData;
import com.hai.order.service.OrderService;
import com.hai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/test")
@Api(value = "订单接口")
public class TestController {
private static Logger log = LoggerFactory.getLogger(TestController.class);
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Resource
private OrderService orderService;
@Resource
private RedisUtil redisUtil;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping(value = "/rocketMq", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "")
public ResponseData rocketMq(@RequestParam(name = "topicGroup", required = true) String topicGroup,
@RequestParam(name = "body", required = true) String body) {
try {
long startTime = System.currentTimeMillis();
String couponKey = "123";
List<HighOrder> list = new ArrayList<>();
for (int i = 0; i <= 1000;i++) {
orderService.getDetailByOrderNo("HF2022080918014365701");
/* list.add(orderService.getDetailByOrderNo("HF2022080918014365701"));*/
/* updateUserWithRedisLock("coupon_" + couponKey, i+"");
new Thread(() -> {*/
/* redisTemplate.opsForValue().setIfAbsent("coupon_" + couponKey, i);
System.out.println("加入数据" + i);*/
// redisTemplate.delete("coupon" + couponKey);
// System.out.println("释放数据" + index);
/*
});*/
}
System.out.println(System.currentTimeMillis() - startTime);
return ResponseMsgUtil.success(list);
} catch (Exception e) {
log.error("HighUserCardController --> rocketMq() error!", e);
return ResponseMsgUtil.exception(e);
}
}
public void updateUserWithRedisLock(String couponKey, String value) throws InterruptedException {
// 占分布式锁,去redis占坑
// 1. 分布式锁占坑
Boolean lock = redisTemplate.opsForValue().setIfAbsent("coupon" + couponKey, value);
if(lock) {
//加锁成功...
// todo business
System.out.println("加锁成功: " + value);
redisTemplate.delete("coupon" + couponKey); //删除key,释放锁
} else {
System.out.println("加锁失败");
/* Thread.sleep(100); // 加锁失败,重试
updateUserWithRedisLock("sysUser");*/
}
}
}
|
package com.web.controller;
import com.hai.common.utils.*;
import com.hai.entity.HighOrder;
import com.hai.model.ResponseData;
import com.hai.order.service.OrderService;
import com.hai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/test")
@Api(value = "订单接口")
public class TestController {
private static Logger log = LoggerFactory.getLogger(TestController.class);
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Resource
private OrderService orderService;
@Resource
private RedisUtil redisUtil;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping(value = "/rocketMq", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "")
public ResponseData rocketMq(@RequestParam(name = "topicGroup", required = true) String topicGroup,
@RequestParam(name = "body", required = true) String body) {
try {
long startTime = System.currentTimeMillis();
String couponKey = "123";
List<HighOrder> list = new LinkedList<>();
for (int i = 0; i <= 100;i++) {
list.add(orderService.getDetailByOrderNo("HF2022080918014365701"));
/* list.add(orderService.getDetailByOrderNo("HF2022080918014365701"));*/
/* updateUserWithRedisLock("coupon_" + couponKey, i+"");
new Thread(() -> {*/
/* redisTemplate.opsForValue().setIfAbsent("coupon_" + couponKey, i);
System.out.println("加入数据" + i);*/
// redisTemplate.delete("coupon" + couponKey);
// System.out.println("释放数据" + index);
/*
});*/
}
System.out.println(System.currentTimeMillis() - startTime);
return ResponseMsgUtil.success(list);
} catch (Exception e) {
log.error("HighUserCardController --> rocketMq() error!", e);
return ResponseMsgUtil.exception(e);
}
}
public void updateUserWithRedisLock(String couponKey, String value) throws InterruptedException {
// 占分布式锁,去redis占坑
// 1. 分布式锁占坑
Boolean lock = redisTemplate.opsForValue().setIfAbsent("coupon" + couponKey, value);
if(lock) {
//加锁成功...
// todo business
System.out.println("加锁成功: " + value);
redisTemplate.delete("coupon" + couponKey); //删除key,释放锁
} else {
System.out.println("加锁失败");
/* Thread.sleep(100); // 加锁失败,重试
updateUserWithRedisLock("sysUser");*/
}
}
}
|
@ -1,25 +1,35 @@ |
|||||||
package com.hai.order.service.impl; |
package com.hai.order.service.impl; |
||||||
|
|
||||||
|
import com.alicp.jetcache.anno.CacheType; |
||||||
|
import com.alicp.jetcache.anno.Cached; |
||||||
import com.hai.entity.HighOrder; |
import com.hai.entity.HighOrder; |
||||||
import com.hai.order.service.OrderService; |
import com.hai.order.service.OrderService; |
||||||
import com.hai.service.HighOrderService; |
import com.hai.service.HighOrderService; |
||||||
import org.springframework.stereotype.Service; |
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
import javax.annotation.Resource; |
import javax.annotation.Resource; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
/** |
/** |
||||||
* @className: OrderServiceImpl |
* @className: OrderServiceImpl |
||||||
* @author: HuRui |
* @author: HuRui |
||||||
* @date: 2022/8/18 |
* @date: 2022/8/18 |
||||||
**/ |
**/ |
||||||
@Service("orderService123") |
@Service("newOrderService") |
||||||
public class OrderServiceImpl implements OrderService { |
public class OrderServiceImpl implements OrderService { |
||||||
|
|
||||||
@Resource |
@Resource |
||||||
private HighOrderService highOrderService; |
private HighOrderService highOrderService; |
||||||
|
|
||||||
@Override |
@Override |
||||||
|
@Cached(cacheType = CacheType.BOTH,name="Order:", key = "#orderNo",expire = 3600) |
||||||
public HighOrder getDetailByOrderNo(String orderNo) { |
public HighOrder getDetailByOrderNo(String orderNo) { |
||||||
return highOrderService.getOrderByOrderNo(orderNo); |
return highOrderService.getOrderByOrderNo(orderNo); |
||||||
} |
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<HighOrder> getOrderList(Map<String, Object> param) { |
||||||
|
return highOrderService.getOrderList(param); |
||||||
|
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue