From 1fd6e1f00506e2bb5f469a1cabf8a1c0b7f890bd Mon Sep 17 00:00:00 2001 From: "shuo.wang" Date: Fri, 1 Nov 2024 15:35:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=84=8F=E5=90=91=E9=87=91=20=E5=8A=A0?= =?UTF-8?q?=E7=9B=9F=E8=B4=B9=20=E5=90=88=E5=90=8C=E7=AD=BE=E7=BA=A6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9+fix=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=20wx=20token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/CommonConstants.java | 1 + .../java/com/cool/store/http/WechatRest.java | 22 ++++++++++-- .../cool/store/service/LinePayService.java | 3 +- .../service/impl/LinePayServiceImpl.java | 34 +++++++++++++------ .../controller/webb/PCLinePayController.java | 13 ++++--- .../controller/webc/LinePayController.java | 11 +++--- 6 files changed, 61 insertions(+), 23 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index 0b923f240..792b09473 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -189,5 +189,6 @@ public class CommonConstants { public static final String HD_ENV = "hd"; public static final String ONLINE_ENV = "online"; + public static final String AMOUNT_KEY = "amount:{0}:{1}"; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java index 5160cf538..766b63225 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java @@ -11,6 +11,7 @@ import com.cool.store.mq.util.HttpRestTemplateService; import com.cool.store.utils.RedisUtilPool; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -31,7 +32,10 @@ public class WechatRest { @Resource private HttpRestTemplateService httpRestTemplateService; - + @Value("${weixin.appId}") + private String wxAppId; + @Value("${weixin.appSecret}") + private String wxAppSecret; /** * 小程序Token 地址 */ @@ -97,10 +101,24 @@ public class WechatRest { responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class); log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr); if(StringUtils.isNotBlank(responseStr)){ - return JSONObject.parseObject(responseStr, PhoneInfoDTO.class); + PhoneInfoDTO phoneInfoDTO = JSONObject.parseObject(responseStr, PhoneInfoDTO.class); + if (phoneInfoDTO != null && "40001".equals(phoneInfoDTO.getErrCode())) { + throw new ServiceException(ErrorCodeEnum.WX_ACCESS_TOKEN_INVALID); + } + return phoneInfoDTO; } } catch (Exception e) { log.error("获取手机号异常", e); + log.info("重新获取微信token"); + String cacheAccessToken = "wechat_mini_" + wxAppId; + redisUtilPool.delKey(cacheAccessToken); + String newAccessToken = getAccessToken(wxAppId, wxAppSecret); + reqUrl = String.format(GET_USERPHONENUMBER, newAccessToken); + responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class); + log.info("WechatRest#newGetUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr); + if (StringUtils.isNotBlank(responseStr)) { + return JSONObject.parseObject(responseStr, PhoneInfoDTO.class); + } } return null; } 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 6900aa0e6..39cc77ff2 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 @@ -16,7 +16,8 @@ public interface LinePayService { LinePayVO getLinePayInfo(Long lineId,Integer businessType,Long shopId); - Integer updateLinePayInfo(Long lineId, Integer businessType, AmountDTO amount, String userId); + Boolean setAmount(Long lineId, String amount); + String getAmount(Long lineId); /** * 跳过缴纳意向金 * @param lineId 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 000b9b136..fede1cdb5 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 @@ -3,6 +3,7 @@ package com.cool.store.service.impl; 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.context.LoginUserInfo; import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.LineInfoDAO; @@ -23,17 +24,21 @@ import com.cool.store.mapper.LineInfoMapper; import com.cool.store.mapper.ShopInfoMapper; import com.cool.store.request.LinePaySubmitRequest; import com.cool.store.service.LinePayService; +import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.poi.DateUtils; import com.cool.store.utils.poi.StringUtils; import com.cool.store.utils.poi.constant.Constants; import com.cool.store.vo.LinePayVO; import com.cool.store.vo.PartnerUserInfoVO; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; +import java.text.MessageFormat; import java.util.*; /** @@ -45,6 +50,8 @@ import java.util.*; @Slf4j public class LinePayServiceImpl implements LinePayService { + @Value("${mybatis.configuration.variables.enterpriseId}") + private String eid; @Resource private LinePayDAO linePayDAO; @@ -62,7 +69,8 @@ public class LinePayServiceImpl implements LinePayService { @Resource ShopInfoMapper shopInfoMapper; - + @Autowired + private RedisUtilPool redisUtilPool; @Override public LinePayVO getLinePayInfo(Long lineId, Integer businessType, Long shopId) { LinePayVO result = null; @@ -78,16 +86,22 @@ public class LinePayServiceImpl implements LinePayService { return result; } @Override - public Integer updateLinePayInfo(Long lineId, Integer businessType, AmountDTO amount, String userId) { - LinePayDO linePayDO = linePayDAO.getByLineIdAndPayTypeAndShopId(lineId, businessType, null); - if (linePayDO != null) { - linePayDO.setAmount(amount.getAmount()); - linePayDO.setUpdateTime(new Date()); - linePayDO.setUpdateUserId(userId); - return linePayDAO.updateLinePay(linePayDO); - } - return 0; + public Boolean setAmount(Long lineId, String amount) { + String key = MessageFormat.format(CommonConstants.AMOUNT_KEY, eid, lineId); + redisUtilPool.setString(key, amount); + return Boolean.TRUE; } + + @Override + public String getAmount(Long lineId) { + String key = MessageFormat.format(CommonConstants.AMOUNT_KEY, eid, lineId); + String getAmount = redisUtilPool.getString(key); + if (StringUtils.isNotBlank(getAmount)) { + return getAmount; + } + return null; + } + @Override public Boolean skipPay(Long lineId, LoginUserInfo user) { log.info("skipPay lineId:{},操作人:{}",lineId,user.getName()); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLinePayController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLinePayController.java index 834c48168..cde4700ef 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLinePayController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCLinePayController.java @@ -32,11 +32,16 @@ public class PCLinePayController { @Resource private LinePayService linePayService; - @ApiOperation("修改意向金缴费金额") - @PostMapping("/updateLinePayInfo") - public ResponseResult updateLinePayInfo(@RequestParam("lineId")Long lineId,@RequestBody AmountDTO amount) { - return ResponseResult.success(linePayService.updateLinePayInfo(lineId, PayBusinessTypeEnum.INTENT_MONEY.getCode(),amount, CurrentUserHolder.getUserId())); + @ApiOperation("保存意向金额") + @PostMapping("/setAmount") + public ResponseResult setAmount(@RequestParam("lineId")Long lineId,@RequestBody AmountDTO amount) { + return ResponseResult.success(linePayService.setAmount( lineId,amount.getAmount().toString())); } + @ApiOperation("查询意向金额") + @GetMapping("/getAmount") + public ResponseResult getAmount(@RequestParam("lineId") Long lineId) { + return ResponseResult.success(linePayService.getAmount(lineId)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LinePayController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LinePayController.java index 7518e9657..34696e69b 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LinePayController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LinePayController.java @@ -25,7 +25,7 @@ import javax.annotation.Resource; */ @RestController @RequestMapping("/mini/linePay") -@Api(tags = "缴纳意向金") +@Api(tags = "mini缴纳意向金") @Slf4j public class LinePayController { @@ -48,11 +48,10 @@ public class LinePayController { return ResponseResult.success(linePayService.submitPayInfo(request, partnerUser)); } - @ApiOperation("修改意向金缴费金额") - @PostMapping("/updateLinePayInfo") - public ResponseResult updateLinePayInfo(@RequestParam("lineId")Long lineId,@RequestBody AmountDTO amount) { - return ResponseResult.success(linePayService.updateLinePayInfo(lineId, PayBusinessTypeEnum.INTENT_MONEY.getCode(),amount, CurrentUserHolder.getUserId())); + @ApiOperation("查询意向金额") + @GetMapping("/getAmount") + public ResponseResult getAmount(@RequestParam("lineId") Long lineId) { + return ResponseResult.success(linePayService.getAmount(lineId)); } - }