From d33c34c76e74dbacf1bf7a57d7d3109e2bc54e68 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 30 八月 2024 11:49:23 +0800 Subject: [PATCH] 代码提交 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 200 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 192 insertions(+), 8 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 01c381a..57387f3 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,167 @@ @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; + @PostMapping("/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(); + 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) { + TShoppingOrder byId = shoppingOrderService.getById(id); + 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 +247,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 @@ -100,7 +284,7 @@ shoppingOrder.setCouponId(exchangeDto.getGoodId()); } shoppingOrder.setPurchaseQuantity(exchangeDto.getNum()); - shoppingOrder.setAppUserAddressId(Long.valueOf(exchangeDto.getAddressId())); + shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId()); shoppingOrder.setOrderAmount(exchangeDto.getOrderPrice()); if (exchangeDto.getCouponId()!=null) { shoppingOrder.setAppCouponId(exchangeDto.getCouponId()); -- Gitblit v1.7.1