diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 5a8b4c6..ace6f22 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,39 +2,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + @@ -271,17 +255,18 @@ - - + - + @@ -290,70 +275,70 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + diff --git a/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java b/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java index 3bd4e4c..efda96e 100644 --- a/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java +++ b/han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java @@ -98,14 +98,12 @@ public class MpWxPayService { request.setDetail(productName); //商品详情 request.setTotalFee(price); //总金额|分计 request.setSpbillCreateIp(clientIp); //终端IP -// request.setNotifyUrl(wxPay.notifyUrl);//设置回调路径 - request.setNotifyUrl("https://tai-testapi.sanhemovie.com/massage-api/post/notify");//设置回调路径 + request.setNotifyUrl("http://augcl.natapp1.cc/massage-admin/massage/order/payOrderNotify");//设置回调路径 request.setProductId(productId); //商品id request.setOpenid(openId); //JSAPI OPENID if (dev){ request.setTotalFee(price); -// request.setNotifyUrl(wxPay.notifyUrlDev); - request.setNotifyUrl("https://tai-testapi.sanhemovie.com/massage-api/post/notify");//设置回调路径 + request.setNotifyUrl("http://augcl.natapp1.cc/massage-admin/massage/order/payOrderNotify");//设置回调路径 } try { Object order = wxPayService.createOrder(request); diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java index 50b6afb..90b00c0 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/controller/MassageOrderController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-17 + * @Date: 2025-03-19 * @Version: V1.0 */ @Api(tags="订单信息表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java index a8fd992..f263f4c 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/entity/MassageOrder.java @@ -22,7 +22,7 @@ import lombok.experimental.Accessors; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-17 + * @Date: 2025-03-19 * @Version: V1.0 */ @Data @@ -84,5 +84,4 @@ public class MassageOrder implements Serializable { //项目信息 @TableField(exist = false) MassageItem massageItem; - } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java index 56dd826..dbd68de 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/mapper/MassageOrderMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-17 + * @Date: 2025-03-19 * @Version: V1.0 */ public interface MassageOrderMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java index 2bd1593..9fb8bca 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/IMassageOrderService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-17 + * @Date: 2025-03-19 * @Version: V1.0 */ public interface IMassageOrderService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java index ded6e14..de17add 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/massageOrder/service/impl/MassageOrderServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-03-17 + * @Date: 2025-03-19 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java index dcfa7e9..ea85ad7 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/massageController/OrderController.java @@ -9,10 +9,7 @@ import org.jeecg.modules.apiService.ItemService; import org.jeecg.modules.apiService.OrderService; import org.jeecg.modules.massageItem.entity.MassageItem; import org.jeecg.modules.massageOrder.entity.MassageOrder; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -41,5 +38,25 @@ public class OrderController { public Result queryOrderById(@RequestHeader("X-Access-Token") String token, String id){ return orderService.queryOrderById(token, id); } + + //创建订单 + @ApiOperation(value="订单-创建订单", notes="订单-创建订单") + @RequestMapping(value = "/createOrder", method = {RequestMethod.POST}) + public Result createOrder(@RequestHeader("X-Access-Token") String token, MassageOrder massageOrder){ + return orderService.createOrder(token, massageOrder); + } + + //支付订单 + @ApiOperation(value="订单-支付订单", notes="订单-支付订单") + @RequestMapping(value = "/payOrder", method = {RequestMethod.POST}) + public Result payOrder(@RequestHeader("X-Access-Token") String token, MassageOrder massageOrder){ + return orderService.payOrder(token, massageOrder); + } + + //支付回调 + @PostMapping("/payOrderNotify") + public Object payOrderNotify(@RequestBody String requestBody){ + return orderService.payOrderNotify(requestBody); + } } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java index 9b46fe4..787333a 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/OrderService.java @@ -1,9 +1,13 @@ package org.jeecg.modules.apiService; +import io.swagger.annotations.ApiOperation; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.apiBean.PageBean; import org.jeecg.modules.massageItem.entity.MassageItem; import org.jeecg.modules.massageOrder.entity.MassageOrder; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; public interface OrderService { //查看订单列表 @@ -11,4 +15,13 @@ public interface OrderService { //查看订单详情 public Result queryOrderById(String token, String id); + + //创建订单 + public Result createOrder(String token, MassageOrder massageOrder); + + //支付订单 + public Result payOrder(String token, MassageOrder massageOrder); + + //支付回调 + Object payOrderNotify(String requestBody); } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java index 42040b2..f9b3dd8 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/OrderServiceImpl.java @@ -1,7 +1,10 @@ package org.jeecg.modules.apiService.impl; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.config.shiro.ShiroRealm; @@ -13,13 +16,21 @@ import org.jeecg.modules.massageItem.entity.MassageItem; import org.jeecg.modules.massageItem.service.IMassageItemService; import org.jeecg.modules.massageOrder.entity.MassageOrder; import org.jeecg.modules.massageOrder.service.IMassageOrderService; +import org.jeecg.modules.massageShop.entity.MassageShop; +import org.jeecg.modules.pay.MpWxPayService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +@Slf4j @Service public class OrderServiceImpl implements OrderService { /******************************************************************************************************************/ + //支付接口 + @Autowired + private MpWxPayService mpWxPayService; //权限验证 @Resource private ShiroRealm shiroRealm; @@ -109,4 +120,88 @@ public class OrderServiceImpl implements OrderService { return Result.error("订单详情查询失败"); } } + + //创建订单 + @Override + public Result createOrder(String token, MassageOrder massageOrder) { + //返回信息 + String massege = ""; + + try{ + //执行新增操作 + boolean result = massageOrderService.save(massageOrder); + + //判断是否新增成功 + if(result){ + return Result.OK("创建订单成功"); + }else { + return Result.OK("创建订单失败"); + } + + }catch (Exception e){ + e.printStackTrace(); + return Result.error("创建订单失败"); + } + } + + //支付订单 + @Override + public Result payOrder(String token, MassageOrder massageOrder) { + //权限验证 + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + try{ + //订单信息 + String payNo = IdWorker.getIdStr();//生成订单号 + massageOrder.setId(payNo); + + //查询服务信息 + MassageItem item = massageItemService.getById(massageOrder.getItemId()); + + //吊起微信支付 + BigDecimal price = massageOrder.getAmount();//价格 + String productName = item.getTitle();//服务名称 + + String s = price.multiply(new BigDecimal(100)).toString(); + int i1 = Double.valueOf(s).intValue(); + Object appOrder = mpWxPayService.createOrder( + "购买"+ productName , + "127.0.0.1", + massageOrder.getId(), + i1, + massageOrder.getId(), + hanHaiMember.getAppletOpenid(), + massageOrder.toString()); + + return Result.OK("支付成功",appOrder); + }catch (Exception e){ + e.printStackTrace(); + return Result.OK("支付失败"); + } + } + + //开通vip-支付回调 + public Result payOrderNotify(String requestBody){ + WxPayOrderNotifyResult notify = mpWxPayService.notify(requestBody); + String outTradeNo = notify.getOutTradeNo(); + log.info("支付回调订单号码:"+outTradeNo); + + try{ + //查询订单信息 + MassageOrder massageOrder = massageOrderService.getById(outTradeNo); + //如果订单存在则修改订单状态 + if (massageOrder!=null){ + if("0".equals(massageOrder.getStatus())){ + massageOrder.setStatus("1"); + } + massageOrderService.updateById(massageOrder); + } + + }catch (Exception e){ + log.info("支付回调失败,订单号码:"+outTradeNo); + e.printStackTrace(); + } + return null; + } + }