From 46f06aa49b1fd284472ee13a1a8345d0046f33b8 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期四, 05 九月 2024 12:11:19 +0800
Subject: [PATCH] 完善功能
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 284 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 235 insertions(+), 49 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index 5b448ec..8418b50 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -3,20 +3,41 @@
import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.ruoyi.account.api.feignClient.AppCouponClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUserAddress;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ExchangeDto;
import com.ruoyi.common.core.utils.OrderCodeUtil;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.model.TExchangeOrder;
import com.ruoyi.order.api.model.TShoppingOrder;
+import com.ruoyi.order.api.query.ShoppingOrderQuery;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.service.TShoppingOrderService;
+import com.ruoyi.other.api.feignClient.CouponClient;
+import com.ruoyi.other.api.feignClient.GoodsClient;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
/**
* <p>
@@ -33,19 +54,172 @@
@Resource
private TShoppingOrderService shoppingOrderService;
-
-
+ @Resource
+ private AppUserClient appUserClient;
+ @Resource
+ private GoodsClient goodsClient;
+ @Resource
+ private CouponClient couponClient;
+
+
+ @PostMapping("/getShoppingOrderList")
+ @ApiOperation(value = "列表查询", tags = {"管理后台-购物订单"})
+ public AjaxResult<PageInfo<TShoppingOrder>> getShoppingOrderList(@RequestBody ShoppingOrderQuery query) {
+ if (StringUtils.hasLength(query.getPhone())) {
+ List<Long> data = appUserClient.getUserIdsByPhone(query.getPhone()).getData();
+ if (data.isEmpty()){
+ return AjaxResult.success(new PageInfo<TShoppingOrder>());
+ }
+ query.setUserIds(data);
+ }
+ if (StringUtils.hasLength(query.getName())) {
+ List<Integer> data = goodsClient.getGoodsIdsByName(query.getName()).getData();
+ query.setGoodsIds(data);
+ List<Integer> data1 = couponClient.getCouponIdsByName(query.getName()).getData();
+ query.setCouponIds(data1);
+ if (data.isEmpty() && data1.isEmpty()){
+ return AjaxResult.success(new PageInfo<TShoppingOrder>());
+ }
+ }
+ PageInfo<TShoppingOrder> res = shoppingOrderService.pageList(query);
+ return AjaxResult.success(res);
+ }
+ @Resource
+ private SysUserClient sysUserClient;
+ @GetMapping("/getShoppingOrderInfoById")
+ @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"})
+ public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) {
+ TShoppingOrder byId = shoppingOrderService.getById(id);
+ if (byId.getConsignerId()!=null){
+ SysUser data = sysUserClient.getSysUser(byId.getConsignerId()).getData();
+ if (data!=null){
+ byId.setConsignerName(data.getUserName());
+ }
+ }
+ if (byId.getCancellationId()!=null){
+ SysUser data = sysUserClient.getSysUser(byId.getCancellationId()).getData();
+ if (data!=null){
+ byId.setCancellationName(data.getUserName());
+ }
+ }
+ if (byId.getAppUserAddressId()!=null){
+ TAppUserAddress data = appUserClient.getAddressById(byId.getAppUserAddressId()).getData();
+ if (data!=null){
+ byId.setReceivingName(data.getName()+"-"+data.getPhone());
+ byId.setReceivingAddress(data.getAddress());
+ }
+ }
+ return AjaxResult.success(byId);
+ }
+ @GetMapping("/deleteShoppingOrder")
+ @ApiOperation(value = "批量删除订单", tags = {"管理后台-购物订单"})
+ public AjaxResult<TShoppingOrder> deleteShoppingOrder(String ids) {
+ shoppingOrderService.removeBatchByIds(Arrays.asList(ids.split(",")));
+ return AjaxResult.success();
+ }
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private AliPaymentClient aliPaymentClient;
+ @Resource
+ private WxPaymentClient wxPaymentClient;
+ @Resource
+ private AppCouponClient appCouponClient;
+ @GetMapping("/cancelShoppingOrder")
+ @ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"})
+ public AjaxResult cancelShoppingOrder(String id) {
+ TShoppingOrder byId = shoppingOrderService.getById(id);
+ Long userid = tokenService.getLoginUser().getUserid();
+ // todo 根据支付方式 取消订单
+ byId.setCancellationId(userid);
+ byId.setCancellationTime(LocalDateTime.now());
+ byId.setStatus(4);
+ switch (byId.getPaymentType()){
+ case 1:
+ // 微信
+ WxPaymentRefundModel wxPaymentRefundModel = new WxPaymentRefundModel();
+ wxPaymentRefundModel.setTransaction_id(byId.getSerialNumber());
+ wxPaymentRefundModel.setOut_trade_no(byId.getCode());
+ wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GW"));
+ // todo 部署到线上之后写回调地址
+// wxPaymentRefundModel.setNotify_url("");
+ String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
+ if (string.contains(".")){
+ string = string.substring(0,string.indexOf("."));
+ }
+ int i = Integer.parseInt(string);
+ WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount();
+ refundAmount.setTotal(i);
+ refundAmount.setRefund(i);
+ wxPaymentRefundModel.setAmount(refundAmount);
+ wxPaymentClient.refundOrderR(wxPaymentRefundModel);
+ break;
+ case 2:
+ // 支付宝
+ RefundReq refundReq = new RefundReq();
+ refundReq.setOutTradeNo(byId.getSerialNumber());
+ String gw = OrderCodeUtil.getOrderCode("GW");
+ refundReq.setOutRequestNo(gw);
+ refundReq.setRefundAmount(byId.getPaymentAmount().toString());
+ refundReq.setRefundReason("后台退款");
+ RefundResp data = aliPaymentClient.refund(refundReq).getData();
+ if (data!=null){
+ // 退款成功 回退优惠券
+// byId.setStatus(4);
+ if (byId.getAppCouponId()!=null){
+ appCouponClient.refund(byId.getAppCouponId().toString());
+ byId.setRefundCode(gw);
+ byId.setRefundAmount(byId.getPaymentAmount());
+ byId.setRefundStatus(2);
+ byId.setRefundSerialNumber(data.getTradeNo());
+ }
+ }
+ break;
+ }
+ shoppingOrderService.updateById(byId);
+ return AjaxResult.success();
+ }
+ @GetMapping("/consignerShoppingOrder")
+ @ApiOperation(value = "发货", tags = {"管理后台-购物订单"})
+ public AjaxResult consignerShoppingOrder(String id,String companyName,String code) {
+ TShoppingOrder byId = shoppingOrderService.getById(id);
+ byId.setExpressCompany(companyName);
+ byId.setExpressNumber(code);
+ Long userid = tokenService.getLoginUser().getUserid();
+ byId.setConsignerId(userid);
+ byId.setConsignerTime(LocalDateTime.now());
+ byId.setStatus(2);
+ shoppingOrderService.updateById(byId);
+ return AjaxResult.success();
+ }
@GetMapping("/getMyShoppingOrderList")
@ApiOperation(value = "获取购买订单列表", tags = {"小程序-商城购买订单"})
- public AjaxResult<List<MyShoppingOrderList>> getMyShoppingOrderList(GetMyShoppingOrderList query){
- List<MyShoppingOrderList> list = shoppingOrderService.getMyShoppingOrderList(query);
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderList(GetMyShoppingOrderList query){
+ Map<String, Object> list = shoppingOrderService.getMyShoppingOrderList(query);
return AjaxResult.success(list);
}
-
+
+ @GetMapping("/getMyShoppingOrderListNum")
+ @ApiOperation(value = "获取购买订单列表数量", tags = {"小程序-商城购买订单"})
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum(){
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId));
+ long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId));
+ long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId));
+ Map<String, Object> map = new HashMap<>();
+ map.put("dfh", dfh);
+ map.put("dsh", dsh);
+ map.put("ywc", ywc);
+ return AjaxResult.success(map);
+ }
+
@GetMapping("/getMyShoppingOrderInfo/{id}")
- @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单"})
+ @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单","管理后台-支付订单-订单信息"})
public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id){
MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id);
return AjaxResult.success(info);
@@ -78,6 +252,21 @@
return shoppingOrderService.cancelOrder(id);
}
+ /**
+ * 商城订单取消微信退款回调
+ */
+ @PostMapping("/cancelShoppingOrderWxRefund")
+ public void cancelShoppingOrderWxRefund(HttpServletRequest request){
+ WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
+ if(null != data){
+ String out_refund_no = data.getOut_refund_no();
+ String refund_id = data.getRefund_id();
+ String tradeState = data.getTradeState();
+ String success_time = data.getSuccess_time();
+ shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
+ }
+ }
+
@ResponseBody
@@ -88,47 +277,44 @@
return AjaxResult.success(list);
}
-// @PostMapping("/create")
-// public R<Long> shopCreate(@RequestBody ExchangeDto exchangeDto){
-// TShoppingOrder shoppingOrder = new TShoppingOrder();
-// shoppingOrder.setCode(OrderCodeUtil.getOrderCode("GW"));
-// shoppingOrder.setAppUserId(exchangeDto.getUserId());
-// shoppingOrder.setOrderType(exchangeDto.getGoodType());
-// if (exchangeDto.getGoodType()==1) {
-// shoppingOrder.setGoodsId(exchangeDto.getGoodId());
-// }else {
-// shoppingOrder.setCouponId(exchangeDto.getGoodId());
-// }
-// shoppingOrder.setPurchaseQuantity(exchangeDto.getNum());
-// shoppingOrder.setAppUserAddressId(Long.valueOf(exchangeDto.getAddressId()));
-// shoppingOrder.setOrderAmount(new BigDecimal("0"));
-// shoppingOrder.setAppCouponId(0L);
-// shoppingOrder.setCouponDiscountAmount(new BigDecimal("0"));
-// shoppingOrder.setVipDiscount(new BigDecimal("0"));
-// shoppingOrder.setVipDiscountAmount(new BigDecimal("0"));
-// shoppingOrder.setPaymentAmount(new BigDecimal("0"));
-// shoppingOrder.setPaymentStatus(0);
-// shoppingOrder.setPaymentType(0);
-// shoppingOrder.setSerialNumber("");
-// shoppingOrder.setRemark("");
-// shoppingOrder.setStatus(0);
-// shoppingOrder.setExpressCompany("");
-// shoppingOrder.setExpressNumber("");
-// shoppingOrder.setConsignerId(0);
-// shoppingOrder.setConsignerTime(LocalDateTime.now());
-// shoppingOrder.setReceivingTime(LocalDateTime.now());
-// shoppingOrder.setCancellationTime(LocalDateTime.now());
-// shoppingOrder.setCancellationId(0);
-// shoppingOrder.setRefundCode("");
-// shoppingOrder.setRefundAmount(new BigDecimal("0"));
-// shoppingOrder.setRefundStatus(0);
-// shoppingOrder.setRefundSerialNumber("");
-// shoppingOrder.setRefundTime(LocalDateTime.now());
-// shoppingOrder.setCreateTime(LocalDateTime.now());
-// shoppingOrder.setDelFlag(false);
-//
-//
-//
-// }
+ @PostMapping("/create")
+ public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto){
+ TShoppingOrder shoppingOrder = new TShoppingOrder();
+ shoppingOrder.setCode(OrderCodeUtil.getOrderCode("GW"));
+ shoppingOrder.setAppUserId(exchangeDto.getUserId());
+ shoppingOrder.setOrderType(exchangeDto.getGoodType());
+ if (exchangeDto.getGoodType()==1) {
+ shoppingOrder.setGoodsId(exchangeDto.getGoodId());
+ }else {
+ shoppingOrder.setCouponId(exchangeDto.getGoodId());
+ }
+ shoppingOrder.setPurchaseQuantity(exchangeDto.getNum());
+ shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId());
+ shoppingOrder.setOrderAmount(exchangeDto.getOrderPrice());
+ if (exchangeDto.getCouponId()!=null) {
+ shoppingOrder.setAppCouponId(exchangeDto.getCouponId());
+ }
+ shoppingOrder.setCouponDiscountAmount(exchangeDto.getDiscountPrice());
+ shoppingOrder.setVipDiscount(new BigDecimal("0"));
+ shoppingOrder.setVipDiscountAmount(exchangeDto.getVipDiscount());
+ shoppingOrder.setPaymentAmount(exchangeDto.getPayPrice());
+ shoppingOrder.setPaymentStatus(1);
+ shoppingOrder.setPaymentType(exchangeDto.getPayMethod());
+ shoppingOrder.setRemark(exchangeDto.getRemark());
+ shoppingOrder.setStatus(1);
+ shoppingOrder.setCreateTime(LocalDateTime.now());
+ shoppingOrder.setDelFlag(false);
+ shoppingOrderService.save(shoppingOrder);
+
+ return R.ok(shoppingOrder);
+
+ }
+
+ @PostMapping("/callBack")
+ public R callBack(@RequestParam("code")String code,@RequestParam("outTradeNo")String outTradeNo){
+ shoppingOrderService.callBack(code,outTradeNo);
+ return R.ok();
+
+ }
}
--
Gitblit v1.7.1