From c4664502dfdaffff555b532e65b51a57ac8b29c2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 16 十月 2024 17:51:32 +0800
Subject: [PATCH] 合并代码

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java |  235 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 157 insertions(+), 78 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 b3d35ca..3158616 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
@@ -1,5 +1,7 @@
 package com.ruoyi.order.controller;
+
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 
 
@@ -14,11 +16,16 @@
 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.TChargingOrderRefund;
 import com.ruoyi.order.api.model.TExchangeOrder;
 import com.ruoyi.order.api.model.TShoppingOrder;
+import com.ruoyi.order.api.model.TShoppingOrderRefund;
 import com.ruoyi.order.api.query.ShoppingOrderQuery;
 import com.ruoyi.order.dto.*;
+import com.ruoyi.order.service.TShoppingOrderRefundService;
 import com.ruoyi.order.service.TShoppingOrderService;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
 import com.ruoyi.other.api.feignClient.CouponClient;
 import com.ruoyi.other.api.feignClient.GoodsClient;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
@@ -37,11 +44,12 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author xiaochen
@@ -60,14 +68,48 @@
 	private GoodsClient goodsClient;
 	@Resource
 	private CouponClient couponClient;
-
-
+	@Resource
+	private TokenService tokenService;
+	@Resource
+	private AliPaymentClient aliPaymentClient;
+	@Resource
+	private WxPaymentClient wxPaymentClient;
+	@Resource
+	private AppCouponClient appCouponClient;
+	@Resource
+	private SysUserClient sysUserClient;
+	@Resource
+	private TShoppingOrderRefundService shoppingOrderRefundService;
+	/**
+	 * 远程管理后台取消订单后退款回调
+	 */
+	@ResponseBody
+	@PostMapping(value = "/shoppingOrderWxRefund")
+	public void shoppingOrderWxRefund(@RequestParam("out_trade_no") String out_refund_no,
+													@RequestParam("out_trade_no") String refund_id,
+													@RequestParam("out_trade_no") String tradeState,
+													@RequestParam("out_trade_no") String success_time){
+		if("SUCCESS".equals(tradeState)){
+			TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no));
+			one.setRefundSerialNumber(refund_id);
+			one.setRefundStatus(2);
+			one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+			shoppingOrderRefundService.updateById(one);
+			TShoppingOrder byId = shoppingOrderService.getById(one.getShoppingOrderId());
+			byId.setStatus(4);
+			shoppingOrderService.updateById(byId);
+			if (byId.getAppCouponId() != null) {
+				appCouponClient.refund(byId.getAppCouponId().toString());
+			}
+		}
+	}
+	
 	@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()){
+			if (data.isEmpty()) {
 				return AjaxResult.success(new PageInfo<TShoppingOrder>());
 			}
 			query.setUserIds(data);
@@ -77,54 +119,61 @@
 			query.setGoodsIds(data);
 			List<Integer> data1 = couponClient.getCouponIdsByName(query.getName()).getData();
 			query.setCouponIds(data1);
-			if (data.isEmpty() && data1.isEmpty()){
+			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;
-	@PostMapping("/getShoppingOrderInfoById")
+	
+	@GetMapping("/getShoppingOrderInfoById")
 	@ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"})
 	public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) {
 		TShoppingOrder byId = shoppingOrderService.getById(id);
-		if (byId.getConsignerId()!=null){
+		if (byId.getConsignerId() != null) {
 			SysUser data = sysUserClient.getSysUser(byId.getConsignerId()).getData();
-			if (data!=null){
+			if (data != null) {
 				byId.setConsignerName(data.getUserName());
 			}
 		}
-		if (byId.getCancellationId()!=null){
+		if (byId.getCancellationId() != null) {
 			SysUser data = sysUserClient.getSysUser(byId.getCancellationId()).getData();
-			if (data!=null){
+			if (data != null) {
 				byId.setCancellationName(data.getUserName());
 			}
 		}
-		if (byId.getAppUserAddressId()!=null){
+		if (byId.getAppUserAddressId() != null) {
 			TAppUserAddress data = appUserClient.getAddressById(byId.getAppUserAddressId()).getData();
-			if (data!=null){
-				byId.setReceivingName(data.getName()+"-"+data.getPhone());
-				byId.setReceivingAddress(data.getAddress());
+			if (data != null) {
+				byId.setReceivingName(data.getName() + "-" + data.getPhone());
+				byId.setReceivingAddress(data.getProvince()+data.getCity()
+						+(data.getDistrict()==null?"":data.getDistrict())
+						+(data.getAddress()==null?"":data.getAddress())
+						+(data.getHouseNumber()==null?"":data.getHouseNumber()));
 			}
+		}
+		if (byId.getOrderType()==1){
+			TGoods data = goodsClient.getGoodsById(byId.getGoodsId()).getData();
+			if (data!=null){
+				byId.setName(data.getName());
+			}
+		}else {
+		 TCoupon data = couponClient.getCouponById1(byId.getCouponId()).getData();
+		 if (data!=null){
+			 byId.setName(data.getName());
+		 }
 		}
 		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) {
@@ -134,51 +183,81 @@
 		byId.setCancellationId(userid);
 		byId.setCancellationTime(LocalDateTime.now());
 		byId.setStatus(4);
-		switch (byId.getPaymentType()){
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+		TShoppingOrderRefund tShoppingOrderRefund = new TShoppingOrderRefund();
+		tShoppingOrderRefund.setPayTime(byId.getPayTime());
+		tShoppingOrderRefund.setPayCode(byId.getSerialNumber());
+		tShoppingOrderRefund.setPayAmount(byId.getPaymentAmount());
+		tShoppingOrderRefund.setPayType(1);
+		tShoppingOrderRefund.setShoppingOrderId(byId.getId());
+		tShoppingOrderRefund.setRefundAmount(byId.getPaymentAmount());
+		tShoppingOrderRefund.setRefundStatus(1);
+		tShoppingOrderRefund.setCode("GWF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
+		tShoppingOrderRefund.setRefundTitle("后台取消订单");
+		tShoppingOrderRefund.setRefundContent("后台取消订单");
+		tShoppingOrderRefund.setRefundReason("后台取消订单");
+		tShoppingOrderRefund.setRefundRemark("全额退款");
+		tShoppingOrderRefund.setRefundTotalAmount(byId.getPaymentAmount());
+		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("");
+				wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GWTK"));
+				wxPaymentRefundModel.setReason("后台购物订单退款");
+				wxPaymentRefundModel.setNotify_url("/payment/wx/refund/notify");
 				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.setCurrency("CNY");
 				refundAmount.setRefund(i);
 				wxPaymentRefundModel.setAmount(refundAmount);
-				wxPaymentClient.refundOrderR(wxPaymentRefundModel);
+				R<String> stringR = wxPaymentClient.refundOrderR(wxPaymentRefundModel);
+				if(200 == stringR.getCode()){
+					shoppingOrderRefundService.save(tShoppingOrderRefund);
+				}
 				break;
 			case 2:
 				// 支付宝
 				RefundReq refundReq = new RefundReq();
 				refundReq.setOutTradeNo(byId.getSerialNumber());
-				String gw = OrderCodeUtil.getOrderCode("GW");
+				String gw = OrderCodeUtil.getOrderCode("GWF");
 				refundReq.setOutRequestNo(gw);
 				refundReq.setRefundAmount(byId.getPaymentAmount().toString());
-				refundReq.setRefundReason("后台退款");
+				refundReq.setRefundReason("后台购物订单退款");
 				RefundResp data = aliPaymentClient.refund(refundReq).getData();
-				if (data!=null){
-					// 退款成功 回退优惠券
-//					byId.setStatus(4);
-					if (byId.getAppCouponId()!=null){
+				if (data != null) {
+					byId.setStatus(4);
+					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+					TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, data.getOutTradeNo()));
+					one.setRefundSerialNumber(data.getTradeNo());
+					one.setRefundStatus(2);
+					one.setRefundTime(LocalDateTime.parse(sdf1.format(new Date()), DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+					shoppingOrderRefundService.updateById(one);
+					if (byId.getAppCouponId() != null) {
+						// 退款成功 回退优惠券
 						appCouponClient.refund(byId.getAppCouponId().toString());
-						byId.setRefundCode(gw);
-						byId.setRefundAmount(byId.getPaymentAmount());
-						byId.setRefundStatus(2);
-						byId.setRefundSerialNumber(data.getTradeNo());
 					}
+					byId.setRefundCode(gw);
+					byId.setRefundAmount(byId.getPaymentAmount());
+					byId.setRefundStatus(2);
+					byId.setRefundSerialNumber(data.getTradeNo());
+					shoppingOrderService.updateById(byId);
 				}
 				break;
 		}
 		shoppingOrderService.updateById(byId);
 		return AjaxResult.success();
 	}
+	
 	@GetMapping("/consignerShoppingOrder")
 	@ApiOperation(value = "发货", tags = {"管理后台-购物订单"})
-	public AjaxResult consignerShoppingOrder(String id,String companyName,String code) {
+	public AjaxResult consignerShoppingOrder(String id, String companyName, String code) {
 		TShoppingOrder byId = shoppingOrderService.getById(id);
 		byId.setExpressCompany(companyName);
 		byId.setExpressNumber(code);
@@ -189,55 +268,55 @@
 		shoppingOrderService.updateById(byId);
 		return AjaxResult.success();
 	}
+	
 	@GetMapping("/getMyShoppingOrderList")
 	@ApiOperation(value = "获取购买订单列表", tags = {"小程序-商城购买订单"})
-	public AjaxResult<Map<String, Object>> getMyShoppingOrderList(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(){
+	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));
+				.eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-				.eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId));
+				.eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-				.eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId));
+				.eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		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 = {"小程序-商城购买订单","管理后台-支付订单-订单信息"})
-	public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id){
+	@ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单", "管理后台-支付订单-订单信息"})
+	public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id) {
 		MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id);
 		return AjaxResult.success(info);
 	}
 	
 	
-	
 	@PutMapping("/confirmReceipt/{id}")
 	@ApiOperation(value = "确认收货操作", tags = {"小程序-商城购买订单"})
-	public AjaxResult confirmReceipt(@PathVariable String id){
+	public AjaxResult confirmReceipt(@PathVariable String id) {
 		TShoppingOrder shoppingOrder = shoppingOrderService.getById(id);
-		if(shoppingOrder.getStatus() == 3){
+		if (shoppingOrder.getStatus() == 3) {
 			return AjaxResult.error("不能重复确认收货");
 		}
-		if(shoppingOrder.getStatus() == 1){
+		if (shoppingOrder.getStatus() == 1) {
 			return AjaxResult.error("订单还未发货呢");
 		}
-		if(shoppingOrder.getStatus() == 4){
+		if (shoppingOrder.getStatus() == 4) {
 			return AjaxResult.error("订单已取消,不允许操作。");
 		}
 		shoppingOrder.setStatus(3);
+		shoppingOrder.setReceivingTime(LocalDateTime.now());
 		shoppingOrderService.updateById(shoppingOrder);
 		return AjaxResult.success();
 	}
@@ -245,7 +324,7 @@
 	
 	@PutMapping("/cancelOrder/{id}")
 	@ApiOperation(value = "取消订单操作", tags = {"小程序-商城购买订单"})
-	public AjaxResult cancelOrder(@PathVariable String id){
+	public AjaxResult cancelOrder(@PathVariable String id) {
 		return shoppingOrderService.cancelOrder(id);
 	}
 	
@@ -253,42 +332,42 @@
 	 * 商城订单取消微信退款回调
 	 */
 	@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);
-		}
+	public void cancelShoppingOrderWxRefund(@RequestParam("out_refund_no") String out_refund_no,
+	                                        @RequestParam("refund_id") String refund_id,
+	                                        @RequestParam("tradeState") String tradeState,
+	                                        @RequestParam("success_time") String success_time) {
+		shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
 	}
-	
 	
 	
 	@ResponseBody
 	@GetMapping(value = "/getNoInvoicedOrder")
 	@ApiOperation(value = "获取未开票的订单数据", tags = {"小程序-充电发票"})
-	public AjaxResult<List<MyShoppingOrderList>> getNoInvoicedOrder(GetNoInvoicedOrder query){
+	public AjaxResult<List<MyShoppingOrderList>> getNoInvoicedOrder(GetNoInvoicedOrder query) {
 		List<MyShoppingOrderList> list = shoppingOrderService.getNoInvoicedOrder(query);
 		return AjaxResult.success(list);
 	}
-
+	
 	@PostMapping("/create")
-	public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto){
+	public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto) {
 		TShoppingOrder shoppingOrder = new TShoppingOrder();
+		shoppingOrder.setTitle(exchangeDto.getTitle());
 		shoppingOrder.setCode(OrderCodeUtil.getOrderCode("GW"));
 		shoppingOrder.setAppUserId(exchangeDto.getUserId());
 		shoppingOrder.setOrderType(exchangeDto.getGoodType());
-		if (exchangeDto.getGoodType()==1) {
+		if (exchangeDto.getGoodType() == 1) {
 			shoppingOrder.setGoodsId(exchangeDto.getGoodId());
-		}else {
+			shoppingOrder.setStatus(1);
+
+		} else {
 			shoppingOrder.setCouponId(exchangeDto.getGoodId());
+			shoppingOrder.setStatus(3);
+
 		}
 		shoppingOrder.setPurchaseQuantity(exchangeDto.getNum());
 		shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId());
 		shoppingOrder.setOrderAmount(exchangeDto.getOrderPrice());
-		if (exchangeDto.getCouponId()!=null) {
+		if (exchangeDto.getCouponId() != null) {
 			shoppingOrder.setAppCouponId(exchangeDto.getCouponId());
 		}
 		shoppingOrder.setCouponDiscountAmount(exchangeDto.getDiscountPrice());
@@ -298,20 +377,20 @@
 		shoppingOrder.setPaymentStatus(1);
 		shoppingOrder.setPaymentType(exchangeDto.getPayMethod());
 		shoppingOrder.setRemark(exchangeDto.getRemark());
-		shoppingOrder.setStatus(1);
+		shoppingOrder.setPhone(exchangeDto.getPhone());
 		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);
+	public R callBack(@RequestParam("code") String code, @RequestParam("outTradeNo") String outTradeNo) {
+		shoppingOrderService.callBack(code, outTradeNo);
 		return R.ok();
-
+		
 	}
 }
 

--
Gitblit v1.7.1