diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java index 41dceb5..1174827 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java @@ -116,43 +116,51 @@ public class PayApi { @RequestMapping("/entPay") @ApiOperation(value = "商家转账给用户") public JSONObject entPay(String orderNo){ - LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); - queryWrapper.eq(MemberPoints::getOrderNo,orderNo).last("limit 1"); - MemberPoints memberPoints = pointsService.getOne(queryWrapper); - if (!memberPoints.getUserId().equals(SecurityUtils.getUserId())){ - throw new RuntimeException("非本人账户"); - } - SysUser sysUser = sysUserService.selectUserById(memberPoints.getUserId()); - // 初始化商户配置 - TransferToUser.TransferToUserRequest userRequest = new TransferToUser.TransferToUserRequest(); - userRequest.appid = appConfig.getAppId(); - userRequest.openid=sysUser.getOpenId(); - // 将元转换为分 - double pointsInYuan = memberPoints.getPoints(); - userRequest.transferAmount = BigDecimal.valueOf(pointsInYuan).multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.HALF_UP).longValue(); + try{ + LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(MemberPoints::getOrderNo,orderNo).last("limit 1"); + MemberPoints memberPoints = pointsService.getOne(queryWrapper); + if (!memberPoints.getUserId().equals(SecurityUtils.getUserId())){ + throw new RuntimeException("非本人账户"); + } + SysUser sysUser = sysUserService.selectUserById(memberPoints.getUserId()); + // 初始化商户配置 + TransferToUser.TransferToUserRequest userRequest = new TransferToUser.TransferToUserRequest(); + userRequest.appid = appConfig.getAppId(); + userRequest.openid=sysUser.getOpenId(); + // 将元转换为分 + double pointsInYuan = memberPoints.getPoints(); + userRequest.transferAmount = BigDecimal.valueOf(pointsInYuan).multiply(BigDecimal.valueOf(10)).setScale(0, RoundingMode.HALF_UP).longValue(); + + userRequest.notifyUrl = wechatPayConfig.getZhuanNotifyUrl(); + userRequest.outBillNo = orderNo; + userRequest.transferSceneId = "1000"; + userRequest.transferRemark = "通告快接积分提现"; + List transferSceneReportInfos = new ArrayList<>(); + TransferToUser.TransferSceneReportInfo transferSceneReportInfo = new TransferToUser.TransferSceneReportInfo(); + transferSceneReportInfo.infoContent = "发布通告得积分"; + transferSceneReportInfo.infoType = "活动名称"; + TransferToUser.TransferSceneReportInfo transferSceneReportInfo2 = new TransferToUser.TransferSceneReportInfo(); + transferSceneReportInfo2.infoContent = "发布通告得积分"; + transferSceneReportInfo2.infoType = "奖励说明"; + transferSceneReportInfos.add(transferSceneReportInfo); + transferSceneReportInfos.add(transferSceneReportInfo2); + userRequest.transferSceneReportInfos = transferSceneReportInfos; + TransferToUser.TransferToUserResponse run = transferToUser.run(userRequest); + JSONObject res = new JSONObject(); + res.put("runData",run); + JSONObject config = new JSONObject(); + config.put("appId",appConfig.getAppId()); + config.put("mchId",wechatPayConfig.getMchId()); + res.put("config",config); + return res; + }catch (Exception e){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MemberPoints::getOrderNo,orderNo); + pointsService.remove(queryWrapper); + throw new RuntimeException(e); + } - userRequest.notifyUrl = wechatPayConfig.getZhuanNotifyUrl(); - userRequest.outBillNo = orderNo; - userRequest.transferSceneId = "1000"; - userRequest.transferRemark = "通告快接积分提现"; - List transferSceneReportInfos = new ArrayList<>(); - TransferToUser.TransferSceneReportInfo transferSceneReportInfo = new TransferToUser.TransferSceneReportInfo(); - transferSceneReportInfo.infoContent = "发布通告得积分"; - transferSceneReportInfo.infoType = "活动名称"; - TransferToUser.TransferSceneReportInfo transferSceneReportInfo2 = new TransferToUser.TransferSceneReportInfo(); - transferSceneReportInfo2.infoContent = "发布通告得积分"; - transferSceneReportInfo2.infoType = "奖励说明"; - transferSceneReportInfos.add(transferSceneReportInfo); - transferSceneReportInfos.add(transferSceneReportInfo2); - userRequest.transferSceneReportInfos = transferSceneReportInfos; - TransferToUser.TransferToUserResponse run = transferToUser.run(userRequest); - JSONObject res = new JSONObject(); - res.put("runData",run); - JSONObject config = new JSONObject(); - config.put("appId",appConfig.getAppId()); - config.put("mchId",wechatPayConfig.getMchId()); - res.put("config",config); - return res; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java index fe10f6f..e58d28b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java @@ -7,6 +7,7 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.member.domain.MemberPoints; import com.ruoyi.member.service.IMemberPointsService; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +48,19 @@ public class MemberPointsController extends BaseController { return success(list); } + /** + * 查询在途订单 + * @author PQZ + * @date 14:36 2025/4/29 + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @GetMapping("/getOnWayOrder") + public AjaxResult getOnWayOrder() { + Long userId = SecurityUtils.getUserId(); + List list = memberPointsService.getOnWayOrder(userId); + return success(list.isEmpty()?null:list.get(0)); + } + /** * 新增博主积分变动记录 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java index 6dcfdfd..df3e7fd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java @@ -61,4 +61,13 @@ public interface IMemberPointsService extends IService { * @type type 回调状态(success:成功,其他为失败) **/ void payoutCallback(String orderNo,String type); + + /** + * 查询当前登录用户在途订单 + * @author PQZ + * @date 14:32 2025/4/29 + * @param userId 用户id + * @return java.util.List + **/ + List getOnWayOrder(Long userId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java index ea9e52e..38b9a30 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java @@ -153,9 +153,7 @@ public class MemberPointsServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper @@ -166,6 +164,8 @@ public class MemberPointsServiceImpl extends ServiceImpl **/ - private List getOnWayOrder(Long userId){ + @Override + public List getOnWayOrder(Long userId){ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper .eq(MemberPoints::getUserId,userId) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 352e114..5c411b6 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -155,16 +155,23 @@ wxpay: appId: wx7d10b0fa4886a583 #商户号 mchId: 1712447936 + #商户密匙v2 + mchKey: ab94673dd0cca78abd0a453d0aac9f98 # APIv3密钥 apiV3Key: ab94673dd0cca78abd0a453d0aac9f98 + #微信支付p12证书 + keyPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/apiclient_cert.p12 # 微信支付V3-url前缀 baseUrl: https://api.mch.weixin.qq.com/v3 # 支付通知回调, pjm6m9.natappfree.cc 为内网穿透地址 notifyUrl: https://3w823u8516.vicp.fun/noticeApi/payApi/payNotify + # 转账通知回调, pjm6m9.natappfree.cc 为内网穿透地址 + zhuanNotifyUrl: https://3w823u8516.vicp.fun/noticeApi/payApi/zhuanNotify # 退款通知回调, pjm6m9.natappfree.cc 为内网穿透地址 refundNotifyUrl: https://www.ddtg.site/notice/notify/refundNotify # 密钥路径,resources根目录下 privateKeyPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/apiclient_key.pem + privateCertPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/apiclient_cert.pem publicKeyPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/pub_key.pem #商户证书序列号 serialNo: 7FCDB0E72D6A928013361ACB77FA3F0DCBD370E3