diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index f4990713b..29f07024f 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -194,6 +194,8 @@ public class RedisConstant { */ public static final String COOLINGPERIOD_FIRSTLOGIN_KEY = "coolingPeriodFirstLoginCache:{0}"; + public static final String REDIS_KEY_PREFIX = "daily_id:{0}"; + /** * 七天 */ diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java index 88060a25c..9d11c6883 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java @@ -34,6 +34,7 @@ public class CoolDateUtils { public static final String DATE_FORMAT_SEC_5 = "yyyy.MM.dd HH:mm"; public static final String DATE_FORMAT_SEC_6 = "yyyy.MM.dd"; public static final String DATE_FORMAT_SEC_7 = "yyyy/MM/dd HH:mm"; + public static final String DATE_FORMAT_SEC_8 = "yyyyMMdd"; private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @@ -136,6 +137,14 @@ public class CoolDateUtils { return str; } + /** + * 获取当前日期 yyyyMMdd + * @return + */ + public static final String getToday(){ + DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(DATE_FORMAT_SEC_8); + return LocalDate.now().format(DATE_FORMATTER); + } /** * 获取当前日期字符串 (yyyy-MM-dd) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisConstantUtil.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisConstantUtil.java index 53d63a32f..71152d693 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisConstantUtil.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisConstantUtil.java @@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import java.text.MessageFormat; + /** * redis常量工具类 @@ -113,4 +115,8 @@ public class RedisConstantUtil { return active + "_" + RedisConstant.GET_AI_MODULE + eid; } + public String getPaymentReceiptCode(String today){ + return active + "_" + MessageFormat.format(RedisConstant.REDIS_KEY_PREFIX, today); + } + } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/UUIDUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/UUIDUtils.java index 054c32b24..1594589b7 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/UUIDUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/UUIDUtils.java @@ -1,8 +1,11 @@ package com.cool.store.utils; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import org.apache.commons.lang3.StringUtils; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Random; /** @@ -14,6 +17,10 @@ import java.util.Random; */ public class UUIDUtils { + private static final String ID_PREFIX = "12"; + + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(CoolDateUtils.DATE_FORMAT_SEC_8); + /** * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID */ @@ -29,22 +36,8 @@ public class UUIDUtils { return uuid; } // 生成 UUID 方法 - public static String generateCustomUUID() { - // 获取当前时间戳(毫秒) - long timestamp = System.currentTimeMillis(); - - // 生成4位随机数字(0000 - 9999) - int randomNumber = new Random().nextInt(10000); - String randomDigits = String.format("%04d", randomNumber); - - // 生成2个随机大写字母 - String randomLetters = ""; - Random random = new Random(); - for (int i = 0; i < 2; i++) { - char c = (char) ('A' + random.nextInt(26)); - randomLetters += c; - } - - return timestamp + randomDigits + randomLetters; + public static String generateCustomUUID(Integer randomCount) { + String today = LocalDate.now().format(DATE_FORMATTER); + return ID_PREFIX + today + String.format("%04d", randomCount); } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/FranchiseFeePayInfoResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/FranchiseFeePayInfoResponse.java index 36da1059f..107da5836 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/FranchiseFeePayInfoResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/FranchiseFeePayInfoResponse.java @@ -68,4 +68,10 @@ public class FranchiseFeePayInfoResponse { @ApiModelProperty("认领状态 0-待认领 1-已认领") private Integer xgjClaimStatus; + + @ApiModelProperty("支付状态 45:待缴费 50:已缴费") + private Integer payStatus; + + @ApiModelProperty("付款单编号") + private String paymentReceiptCode; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/LinePayService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/LinePayService.java index d5c966c87..bb30dfa19 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/LinePayService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/LinePayService.java @@ -32,6 +32,8 @@ public interface LinePayService { Long submitFranchiseFeePayInfo(LinePaySubmitRequest request, String userId); + String getPaymentReceiptCode(); + List getFranchiseFeePayInfoList(Long shopId); Boolean deleteFranchiseFeePayInfo(Long id,String userId); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java index 827de6128..41332f829 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; +import com.cool.store.constants.RedisConstant; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.LineInfoDAO; @@ -24,6 +25,8 @@ import com.cool.store.request.LinePaySubmitRequest; import com.cool.store.response.FranchiseFeePayInfoResponse; import com.cool.store.service.LinePayService; import com.cool.store.service.UserAuthMappingService; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.RedisConstantUtil; import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.UUIDUtils; import com.cool.store.utils.poi.DateUtils; @@ -42,6 +45,7 @@ import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.MessageFormat; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -54,6 +58,7 @@ import java.util.stream.Collectors; @Slf4j public class LinePayServiceImpl implements LinePayService { + @Value("${mybatis.configuration.variables.enterpriseId}") private String eid; @Resource @@ -77,6 +82,8 @@ public class LinePayServiceImpl implements LinePayService { private RedisUtilPool redisUtilPool; @Resource private UserAuthMappingService userAuthMappingService; + @Resource + RedisConstantUtil redisConstantUtil; @Override public LinePayVO getLinePayInfo(Long lineId, Integer businessType, Long shopId) { @@ -182,7 +189,7 @@ public class LinePayServiceImpl implements LinePayService { if (linePayDO.getId() != null) { linePayDAO.updateLinePay(linePayDO); } else { - linePayDO.setPaymentReceiptCode(UUIDUtils.generateCustomUUID()); + linePayDO.setPaymentReceiptCode(getPaymentReceiptCode()); linePayDAO.addLinePay(linePayDO); } if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_71.getShopSubStageStatus())) @@ -204,6 +211,19 @@ public class LinePayServiceImpl implements LinePayService { } } + @Override + public String getPaymentReceiptCode(){ + //当前日期 + String today = CoolDateUtils.getToday(); + String redisKey = redisConstantUtil.getPaymentReceiptCode(today); + Long sequence = redisUtilPool.incrby(redisKey, 1); + //第一次设置过期时间 一天 + if (sequence==1){ + redisUtilPool.expire(redisKey,RedisConstant.ONE_DAY_SECONDS); + } + return "12" + today + String.format("%04d", sequence); + } + @Override public List getFranchiseFeePayInfoList(Long shopId) { List list = linePayDAO.getFranchiseFeePayInfoByShopId(shopId); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java index 8778e7a33..d800373e5 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java @@ -1,5 +1,6 @@ package com.cool.store.controller.webb; +import com.cool.store.constants.RedisConstant; import com.cool.store.dao.*; import com.cool.store.dto.FoodTokenDTO; import com.cool.store.dto.GetAccessTokenDTO; @@ -25,8 +26,12 @@ import com.cool.store.response.oppty.OpportunityInfoPageResponse; import com.cool.store.service.*; import com.cool.store.service.impl.CommonService; import com.cool.store.service.impl.UserAuthMappingServiceImpl; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.RedisConstantUtil; +import com.cool.store.utils.RedisUtilPool; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -304,4 +309,16 @@ public class PCTestController { return ResponseResult.success(thirdFoodService.getFoodToken(dto)); } + @Resource + LinePayService linePayService; + @GetMapping("/getToday") + @ApiOperation("getToday") + public ResponseResult getToday() { + for (int i = 0; i < 10; i++) { + System.out.println(linePayService.getPaymentReceiptCode()); + } + return ResponseResult.success(Boolean.TRUE); + } + + }