| server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/web/src/main/java/com/doumee/api/Repeat/RepeatSubmit.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/web/src/main/java/com/doumee/api/Repeat/RepeatSubmitAspect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/web/src/main/java/com/doumee/api/web/ApiController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -443,19 +443,19 @@ cell.setCellStyle(style); } /** * é ç½®åå æ ¼è¾¹æ¡ */ private static void configCellBorder (CellStyle style) { style.setBorderTop(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); } /** * é ç½®åå æ ¼è¾¹æ¡ */ private static void configCellBorder (CellStyle style) { style.setBorderTop(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); } /** * å¤çåå æ ¼æ°æ® server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -811,7 +811,8 @@ if(type == 0|| type ==1 || type==2){ //妿æ¯é¶æ®µé款 Goodsorder goodsorder = goodsorderMapper.selectById(refund.getObjId()); closeGoodsorderDoneNoRefund(goodsorder,type,refund.getMoney(),refund.getId(),null); List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId());//æè½¦éªè¡è®°å½ closeGoodsorderDoneNoRefund(goodsorder,type,refund.getMoney(),refund.getId(),memberRides); } } server/web/src/main/java/com/doumee/api/Repeat/RepeatSubmit.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.doumee.api.Repeat; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; // @Target 表示该注解ç¨äºä»ä¹å°æ¹ // ElementType.CONSTRUCTOR ç¨å¨æé å¨ // ElementType.FIELD ç¨äºæè¿°å-屿§ä¸ // ElementType.METHOD ç¨å¨æ¹æ³ä¸ // ElementType.TYPE ç¨å¨ç±»ææ¥å£ä¸ // ElementType.PACKAGE ç¨äºæè¿°å @Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE}) //@Retention 表示å¨ä»ä¹çº§å«ä¿åè¯¥æ³¨è§£ä¿¡æ¯ // RetentionPolicy.SOURCE ä¿çå°æºç ä¸ // RetentionPolicy.CLASS ä¿çå°åèç ä¸ // RetentionPolicy.RUNTIME ä¿çå°èææºè¿è¡æ¶ï¼æå¤ï¼å¯éè¿åå°è·åï¼ @Retention(RetentionPolicy.RUNTIME) public @interface RepeatSubmit { /** * é»è®¤çé´éæ¶é´(ms)ï¼å°äºæ¤æ¶é´è§ä¸ºéå¤æäº¤ */ int timeout() default 2000; } server/web/src/main/java/com/doumee/api/Repeat/RepeatSubmitAspect.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package com.doumee.api.Repeat; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.util.concurrent.TimeUnit; // å¼å¯æ¥å¿ï¼éè¦ä¾èµlombok @Slf4j // æä¸ä¸ªç±»å®ä¹ä¸ºåé¢ä¾å®¹å¨è¯»å @Aspect @Component public class RepeatSubmitAspect { @Resource private RedisTemplate<String, String> redisTemplate; // è¿æ¯ä¸ä¸ªç¯ç»éç¥ï¼å®ä¼å´ç»è¢« @RepeatSubmit 注解æ è®°çæ¹æ³æ§è¡,è¿éç repeatSubmit ä¸ä¸é¢çåæ°å¯¹åº @Around("@annotation(repeatSubmit)") public Object around(ProceedingJoinPoint point, RepeatSubmit repeatSubmit) throws Throwable { // è·åç¨æ·çtokenéªè¯,è¿é项ç®ç¨çæ¯ header éç Authorization åæ° HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String requestToken = request.getHeader("token"); // è·å注解 MethodSignature signature = (MethodSignature) point.getSignature(); Method method = signature.getMethod(); // è·åç±»ï¼æ¹æ³ String className = method.getDeclaringClass().getName(); String methodName = method.getName(); // ç»è£ keyï¼ç¨æ·å¯ä¸æ è¯+æä½ç±»+æ¹æ³ String key = requestToken + "#" + className + "#" + methodName; String keyHashCode = String.valueOf(Math.abs(key.hashCode())); log.info("key:{},keyHashcode:{}", key, keyHashCode); //è·åè¶ æ¶æ¶é´ int timeOut = repeatSubmit.timeout(); log.info("è¶ æ¶æ¶é´{}", timeOut); // ä»ç¼åç»ä¸æ ¹æ®keyè·åæ°æ® String value = redisTemplate.opsForValue().get(keyHashCode); if (value != null) { log.info("éå¤æäº¤"); // 妿valueä¸ä¸ºç©º; return "请å¿éå¤æäº¤"; throw new BusinessException(ResponseStatus.MASSIVE_REQUEST); } else { log.info("馿¬¡æäº¤"); // value为空ï¼åå å ¥ç¼åï¼å¹¶è®¾ç½®è¿æè¿ææ¶é´ redisTemplate.opsForValue().set(keyHashCode, "1", timeOut, TimeUnit.MILLISECONDS); } //æ§è¡Object Object object = point.proceed(); return object; } } server/web/src/main/java/com/doumee/api/web/ApiController.java
@@ -33,6 +33,7 @@ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); return request; } /** * è·åç¨æ·ID * server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
@@ -35,6 +35,7 @@ import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.xpath.operations.Bool; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -120,22 +121,27 @@ gparam.setStatus(Constants.goodsorderStatus.pay); gparam.setType(Constants.ZERO); Goodsorder goodsorder = goodsorderService.findOne(gparam); this.backBike(goodsorder); this.backBike(goodsorder,false); } /** * èªå¨è¿è½¦ * 强å¶è¿è½¦ * @param id */ @Transactional public void forceBack(String id){ Goodsorder goodsorder = goodsorderService.findById(id); this.backBike(goodsorder); this.backBike(goodsorder,true); } /** * è¿è½¦ä¸å¡ * @param goodsorder * @param isForce 强å¶è¿è½¦ ä¸éªè¯è½¦è¾å°ç¹ */ @Transactional(rollbackFor = {BusinessException.class}) public void backBike(Goodsorder goodsorder){ public void backBike(Goodsorder goodsorder, Boolean isForce){ if(Objects.isNull(goodsorder)){ throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"æ éªè¡è®¢åè®°å½"); } @@ -151,10 +157,14 @@ &&Constants.equalsInteger(rides.getType(),Constants.ONE)){ //妿æ¯çµè½¦å¹¶ä¸æ¯éªè¡ä¸ è¿è¡å ³éå¤ç Bikes bike = getElecBikeByCode(rides.getBikeCode()); //æ¥è¯¢å车ç«ç¹ä¿¡æ¯ if(bike.getSiteId() ==null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对ä¸èµ·ï¼è¯·æè¦æ±åå¾å车ç¹å车ï¼"); //é强å¶è¿è½¦ éè¦éå¶å°ç¹ if(!isForce){ //æ¥è¯¢å车ç«ç¹ä¿¡æ¯ if(bike.getSiteId() ==null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对ä¸èµ·ï¼è¯·æè¦æ±åå¾å车ç¹å车ï¼"); } } lockBikes(bike.getDeviceSn(),Constants.ONE);//åèµ·å ³éæä»¤è¯·æ± backIds.add(rides.getId()); rides.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());//å·²è¿è½¦