From 0f4459e4201fdc19185b7dd03215871f036acd70 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期三, 28 五月 2025 16:45:01 +0800 Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 163 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 133 insertions(+), 30 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java index e2a563a..10b7aab 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java @@ -3,14 +3,22 @@ import java.time.LocalDateTime; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.account.api.feignClient.AppUserAddressClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.dto.ExchangeBackDto; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.model.TShoppingOrder; @@ -25,8 +33,12 @@ import com.ruoyi.order.service.TShoppingOrderService; import com.ruoyi.common.core.dto.ExchangeDto; import com.ruoyi.common.core.utils.OrderCodeUtil; +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; +import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.Api; @@ -36,10 +48,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -67,7 +76,16 @@ private GoodsClient goodsClient; @Resource private CouponClient couponClient; - + + @Resource + private SysUserClient sysUserClient; + + @Resource + private TokenService tokenService; + + + + @RequiresPermissions(value = {"/exchangeOrder"}, logical = Logical.OR) @PostMapping("/getExchangeOrderList") @ApiOperation(value = "列表查询", tags = {"管理后台-兑换订单"}) public AjaxResult<PageInfo<TExchangeOrder>> getExchangeOrderList(@RequestBody ShoppingOrderQuery query) { @@ -91,9 +109,11 @@ PageInfo<TExchangeOrder> res = exchangeOrderService.pageList(query); return AjaxResult.success(res); } - @Resource - private SysUserClient sysUserClient; - @PostMapping("/getShoppingOrderInfoById") + + + + @RequiresPermissions(value = {"/exchangeOrder/deliver_goods"}, logical = Logical.OR) + @GetMapping("/getShoppingOrderInfoById") @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-兑换订单"}) public AjaxResult<TExchangeOrder> getShoppingOrderList(String id) { TExchangeOrder byId = exchangeOrderService.getById(id); @@ -116,32 +136,59 @@ byId.setReceivingAddress(data.getAddress()); } } + switch (byId.getOrderType()){ + case 1: + TGoods data = goodsClient.getGoodsById(byId.getGoodsId()).getData(); + if (data!=null){ + byId.setName(data.getName()); + } + break; + case 2: + TCoupon data1 = couponClient.getCouponById1(byId.getCouponId()).getData(); + if (data1!=null){ + byId.setName(data1.getName()); + } + break; + } return AjaxResult.success(byId); } - @Resource - private TokenService tokenService; + + + + @RequiresPermissions(value = {"/exchangeOrder/del"}, logical = Logical.OR) @GetMapping("/deleteShoppingOrder") @ApiOperation(value = "批量删除订单", tags = {"管理后台-兑换订单"}) public AjaxResult<TExchangeOrder> deleteShoppingOrder(String ids) { exchangeOrderService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/exchangeOrder/cancel"}, logical = Logical.OR) @GetMapping("/cancelShoppingOrder") @ApiOperation(value = "取消订单", tags = {"管理后台-兑换订单"}) public AjaxResult cancelShoppingOrder(String id) { TExchangeOrder byId = exchangeOrderService.getById(id); Long userid = tokenService.getLoginUser().getUserid(); - // todo 根据支付方式 取消订单 byId.setCancellationId(userid); byId.setCancellationTime(LocalDateTime.now()); byId.setStatus(4); exchangeOrderService.updateById(byId); + // 回退积分 + Integer points = byId.getPoints(); + appUserClient.refundPoints(byId.getAppUserId()+"-"+points); return AjaxResult.success(); } + + + + @RequiresPermissions(value = {"/exchangeOrder/deliver_goods"}, logical = Logical.OR) @GetMapping("/consignerShoppingOrder") @ApiOperation(value = "发货", tags = {"管理后台-兑换订单"}) - public AjaxResult consignerShoppingOrder(String id) { + public AjaxResult consignerShoppingOrder(String id,String companyName,String code) { TExchangeOrder byId = exchangeOrderService.getById(id); + byId.setExpressCompany(companyName); + byId.setExpressNumber(code); Long userid = tokenService.getLoginUser().getUserid(); byId.setConsignerId(userid); byId.setConsignerTime(LocalDateTime.now()); @@ -190,32 +237,69 @@ String[] split = goodsIds.split("-"); // 取出最后一位字符 类型1查询现金购买 类型2查询积分兑换 String s = split[split.length - 1]; + String[] split1 = split[0].split(","); List<Integer> res = new ArrayList<>(); switch (Integer.parseInt(s)){ case 1: - for (int i = 0; i < split.length-1; i++) { + for (int i = 0; i < split1.length; i++) { Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>() .eq("order_type",1) - .eq("goods_id", split[i]) - .eq("payment_status", 2) - .ne("refund_status", 2)) + .eq("goods_id", split1[i]) + .isNull("refund_status")) .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum); res.add(reduce); } break; case 2: - for (int i = 0; i < split.length-1; i++) { - Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>() - .eq("order_type",1) - .ne("status",4) - .eq("goods_id", split[i]) - ) + for (int i = 0; i < split1.length; i++) { + Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",1) + .ne("status",4).eq("goods_id", split1[i])) .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum); res.add(reduce); } break; } return R.ok(res); + } + + @GetMapping("/getCount") + public R<Integer> getCount(@RequestParam("goodId") Integer goodId,@RequestParam("goodeType")Integer goodeType,@RequestParam("buyType")Integer buyType){ + if (buyType==1){ + //现金 + if (goodeType==1){ + //商品 + Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>() + .eq("order_type",1) + .eq("goods_id", goodId) + .isNull("refund_status")) + .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum); + return R.ok(reduce); + }else { + //优惠券 + Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>() + .eq("order_type",2) + .eq("coupon_id", goodId) + .isNull("refund_status")) + .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum); + return R.ok(reduce); + } + + }else { + //兑换 + if (goodeType==1){ + Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",1) + .ne("status",4).eq("goods_id", goodId)) + .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum); + return R.ok(reduce); + }else { + Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",2) + .ne("status",4).eq("coupon_id", goodId)) + .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum); + return R.ok(reduce); + } + } + + } /** * 管理后台 根据t_app_coupon订单ids查询优惠券的订单编号 @@ -224,7 +308,7 @@ */ @GetMapping("/getCodeByOrderId/{goodsIds}") public R<List<String>> getCodeByOrderId(@PathVariable("goodsIds") String goodsIds){ - String[] split = goodsIds.split("-"); + String[] split = goodsIds.split(","); List<String> strings = new ArrayList<>(); for (String s : split) { if (s.contains("-")){ @@ -264,9 +348,11 @@ return R.ok(exchangeOrderService.lambdaQuery().eq(TExchangeOrder::getCouponId,goodId).eq(TExchangeOrder::getAppUserId,userId).ne(TExchangeOrder::getStatus,4).count()); } } + @Resource + private AppUserAddressClient appUserAddressClient; @PostMapping("/create") - public R<Long> exchangeCreate(@RequestBody ExchangeDto exchangeDto){ + public R<ExchangeBackDto> exchangeCreate(@RequestBody ExchangeDto exchangeDto){ TExchangeOrder tExchangeOrder = new TExchangeOrder(); tExchangeOrder.setCode(OrderCodeUtil.getOrderCode("DH")); tExchangeOrder.setAppUserId(exchangeDto.getUserId()); @@ -277,18 +363,26 @@ tExchangeOrder.setCouponId(exchangeDto.getGoodId()); } tExchangeOrder.setPurchaseQuantity(1); - tExchangeOrder.setAppUserAddressId(Long.valueOf(exchangeDto.getAddressId())); + tExchangeOrder.setAppUserAddressId(exchangeDto.getAddressId()==null?null:Long.valueOf(exchangeDto.getAddressId())); tExchangeOrder.setPoints(exchangeDto.getPoint()); - tExchangeOrder.setRemark(""); + tExchangeOrder.setRemark(exchangeDto.getRemark()); if (exchangeDto.getGoodType()==1){ - tExchangeOrder.setStatus(0); + tExchangeOrder.setStatus(1); }else { tExchangeOrder.setStatus(3); } tExchangeOrder.setCreateTime(LocalDateTime.now()); tExchangeOrder.setDelFlag(false); + + TAppUserAddress data = appUserAddressClient.getAppUserAddressById(exchangeDto.getAddressId()).getData(); + tExchangeOrder.setAddressJson(JSON.toJSONString(data)); + exchangeOrderService.save(tExchangeOrder); - return R.ok(tExchangeOrder.getId()); + ExchangeBackDto exchangeBackDto = new ExchangeBackDto(); + exchangeBackDto.setId(tExchangeOrder.getId()); + exchangeBackDto.setCode(tExchangeOrder.getCode()); + + return R.ok(exchangeBackDto); } @@ -296,8 +390,8 @@ @GetMapping("/getMyExchangeOrder") @ApiOperation(value = "获取兑换记录列表", tags = {"小程序-兑换记录"}) - public AjaxResult<List<MyExchangeOrderList>> getMyExchangeOrder(GetMyExchangeOrder query){ - List<MyExchangeOrderList> list = exchangeOrderService.getMyExchangeOrder(query); + public AjaxResult<Map<String, Object>> getMyExchangeOrder(GetMyExchangeOrder query){ + Map<String, Object> list = exchangeOrderService.getMyExchangeOrder(query); return AjaxResult.success(list); } @@ -307,6 +401,11 @@ @ApiOperation(value = "获取兑换订单详情", tags = {"小程序-兑换记录"}) public AjaxResult<ExchangeOrderGoodsInfo> getGoodsExchangeOrder(@PathVariable String id){ ExchangeOrderGoodsInfo goodsExchangeOrder = exchangeOrderService.getGoodsExchangeOrder(id); + TExchangeOrder exchangeOrder = exchangeOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!exchangeOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return AjaxResult.success(goodsExchangeOrder); } @@ -315,6 +414,10 @@ @ApiOperation(value = "确认收货操作", tags = {"小程序-兑换记录"}) public AjaxResult confirmReceipt(@PathVariable String id){ TExchangeOrder tExchangeOrder = exchangeOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!tExchangeOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } if(tExchangeOrder.getStatus() == 3){ return AjaxResult.error("不能重复确认收货"); } -- Gitblit v1.7.1