From 8c2a413d2574151a2bc762aa0779f766de48160b Mon Sep 17 00:00:00 2001 From: phpcjl <phpcjl@gmail.com> Date: 星期一, 16 十二月 2024 18:14:01 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassList.java | 34 +++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/RefundPassInfo.java | 65 +++++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java | 8 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsShopMapper.xml | 24 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassListVo.java | 25 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/RefundPassSettingVo.java | 22 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java | 29 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java | 41 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsShopMapper.java | 19 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java | 7 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 25 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java | 17 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java | 57 +++++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsListVo.java | 21 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java | 141 ++++++++++++ ruoyi-service/ruoyi-order/src/main/resources/mapper/order/RefundPassMapper.xml | 35 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java | 22 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsShopServiceImpl.java | 30 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsList.java | 20 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsShopService.java | 12 + 20 files changed, 637 insertions(+), 17 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java index 893ae60..2c2a3cc 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java @@ -3,12 +3,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.model.Order; import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.RefundPassService; import com.ruoyi.order.vo.ApplyRefundPass; +import com.ruoyi.order.vo.OrderRefundPassList; +import com.ruoyi.order.vo.OrderRefundPassListVo; +import com.ruoyi.order.vo.RefundPassInfo; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -16,6 +21,7 @@ import javax.annotation.Resource; import java.util.Arrays; +import java.util.List; /** * <p> @@ -27,7 +33,7 @@ */ @RestController @RequestMapping("/refund-pass") -public class RefundPassController { +public class RefundPassController extends BaseController { @Resource @@ -119,5 +125,54 @@ return R.ok(); } + + + @ResponseBody + @GetMapping("/getOrderRefundPassList") + @ApiOperation(value = "获取售后列表数据", tags = {"管理后台-售后管理", "门店后台-售后管理"}) + public TableDataInfo<OrderRefundPassList> getOrderRefundPassList(OrderRefundPassListVo refundPassListVo){ + startPage(); + List<OrderRefundPassList> orderRefundPassList = refundPassService.getOrderRefundPassList(refundPassListVo); + return getDataTable(orderRefundPassList); + } + + + @ResponseBody + @PostMapping("/authPassStatus/{id}/{status}") + @ApiOperation(value = "审核售后", tags = {"管理后台-售后管理", "门店后台-售后管理"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "售后数据id", required = true, dataType = "long"), + @ApiImplicitParam(name = "status", value = "审核状态(2=同意,3=拒绝)", required = true, dataType = "int"), + @ApiImplicitParam(name = "passRemark", value = "审核备注", required = false, dataType = "string"), + }) + public R authPassStatus(@PathVariable("id") Long id, @PathVariable("status") Integer status, @RequestParam("passRemark") String passRemark){ + return refundPassService.authPassStatus(id, status, passRemark); + } + + + @ResponseBody + @PutMapping("/refundPassReceive/{id}") + @ApiOperation(value = "售后确认收货操作", tags = {"管理后台-售后管理"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "售后数据id", required = true, dataType = "long"), + }) + public R refundPassReceive(@PathVariable("id") Long id){ + return refundPassService.refundPassReceive(id); + } + + + + @ResponseBody + @GetMapping("/getRefundPassInfo/{id}") + @ApiOperation(value = "获取售后数据详情", tags = {"管理后台-售后管理", "门店后台-售后管理"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "售后数据id", required = true, dataType = "long"), + }) + public R<RefundPassInfo> getRefundPassInfo(@PathVariable("id") Long id){ + RefundPassInfo refundPassInfo = refundPassService.getRefundPassInfo(id); + return R.ok(refundPassInfo); + } + + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java index f735924..afbd8e1 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/RefundPassMapper.java @@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.model.RefundPass; +import com.ruoyi.order.vo.OrderRefundPassList; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -12,5 +16,18 @@ * @since 2024-11-21 */ public interface RefundPassMapper extends BaseMapper<RefundPass> { + + + /** + * 管理后台获取售后管理列表数据 + * @param code 订单号 + * @param appUserIds 下单用户id + * @param refundMethod 售后类型 + * @param status 售后状态 + * @return + */ + List<OrderRefundPassList> getOrderRefundPassList(@Param("code") String code, @Param("appUserIds") List<Long> appUserIds, + @Param("shopId") Integer shopId, @Param("refundMethod") Integer refundMethod, + @Param("status") Integer status); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java index 4ee3d67..e4474a9 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java @@ -52,6 +52,13 @@ /** + * 返回订单支付金额和回退积分和会员等级 + * @param order + */ + void refundPayMoney(Order order); + + + /** * 收货操作 * @param orderId * @return diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java index f14246e..90355f6 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java @@ -4,6 +4,13 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.vo.ApplyRefundPass; +import com.ruoyi.order.vo.OrderRefundPassList; +import com.ruoyi.order.vo.OrderRefundPassListVo; +import com.ruoyi.order.vo.RefundPassInfo; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; /** * <p> @@ -21,5 +28,37 @@ * @return */ R applyRefundPass(ApplyRefundPass applyRefundPass); - + + + /** + * 管理后台获取售后管理列表数据 + * @return + */ + List<OrderRefundPassList> getOrderRefundPassList(OrderRefundPassListVo refundPassListVo); + + + /** + * 售后订单审核操作 + * @param id + * @param status + * @param passRemark + * @return + */ + R authPassStatus(Long id, Integer status, String passRemark); + + + /** + * 售后确认收货操作 + * @param id + * @return + */ + R refundPassReceive(Long id); + + + /** + * 获取售后详情 + * @param id + * @return + */ + RefundPassInfo getRefundPassInfo(Long id); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index ac220ed..f68a9d5 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -341,6 +341,16 @@ } order.setOrderStatus(5); this.updateById(order); + refundPayMoney(order); + return R.ok(); + } + + + /** + * 返回订单支付金额和回退积分和会员等级 + * @param order + */ + public void refundPayMoney(Order order){ //开始退款 Integer payMethod = order.getPayMethod(); BigDecimal paymentAmount = order.getPaymentAmount(); @@ -350,16 +360,16 @@ } if(2 == payMethod){ //余额退款 - OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, orderId)); + OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, order.getId())); BigDecimal balance = appUser.getBalance(); appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN)); appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); - + //构建账户余额流水明细 BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); - balanceChangeRecord.setOrderId(orderId); + balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); @@ -373,7 +383,7 @@ if(3 == payMethod){ //积分退款 appUser.setLavePoint(appUser.getLavePoint() + order.getPoint()); - + //开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款 if(null != order.getExpressAmount() && BigDecimal.ZERO.compareTo(order.getExpressAmount()) < 0){ BigDecimal expressAmount = order.getExpressAmount(); @@ -382,14 +392,14 @@ } if(2 == order.getExpressPayMethod()){ //余额退款 - OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, orderId)); + OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, order.getId())); BigDecimal balance = appUser.getBalance(); appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN)); appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); appUser.setBalance(balance.add(expressAmount).setScale(2, RoundingMode.HALF_EVEN)); //构建账户余额流水明细 BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); - balanceChangeRecord.setOrderId(orderId); + balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); @@ -425,10 +435,9 @@ userPoint.setBalance(appUser.getLavePoint()); userPoint.setCreateTime(LocalDateTime.now()); userPoint.setAppUserId(order.getAppUserId()); - userPoint.setObjectId(orderId); + userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); - return R.ok(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java index b468e51..8e36fdf 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java @@ -4,20 +4,33 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.mapper.RefundPassMapper; import com.ruoyi.order.model.Order; import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.RefundPassService; -import com.ruoyi.order.vo.ApplyRefundPass; +import com.ruoyi.order.vo.*; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.api.feignClient.BaseSettingClient; +import com.ruoyi.other.api.feignClient.ShopClient; +import com.ruoyi.other.api.feignClient.TechnicianClient; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -35,6 +48,13 @@ @Resource private BaseSettingClient baseSettingClient; + @Resource + private AppUserClient appUserClient; + @Resource + private TokenService tokenService; + + @Resource + private SysUserClient sysUserClient; @@ -80,4 +100,123 @@ orderService.updateById(order); return R.ok(); } + + + /** + * 管理后台获取售后管理列表数据 + * @return + */ + @Override + public List<OrderRefundPassList> getOrderRefundPassList(OrderRefundPassListVo refundPassListVo) { + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserClient.getSysUser(userid).getData(); + Integer shopId = null; + if(2 == sysUser.getRoleType()){ + shopId = sysUser.getObjectId(); + } + List<Long> appUserIds = new ArrayList<>(); + //搜索条件,用户姓名 + if(StringUtils.isNotEmpty(refundPassListVo.getName())){ + List<AppUser> data = appUserClient.getAppUserByName(refundPassListVo.getName()).getData(); + List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + appUserIds.addAll(collect); + } + //搜索条件,用户电话 + if(StringUtils.isNotEmpty(refundPassListVo.getPhone())){ + List<AppUser> data = appUserClient.getAppUserByPhone(refundPassListVo.getPhone()).getData(); + List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + appUserIds.addAll(collect); + } + List<OrderRefundPassList> orderRefundPassList = this.baseMapper.getOrderRefundPassList(refundPassListVo.getCode(), appUserIds, shopId, refundPassListVo.getRefundMethod(), refundPassListVo.getStatus()); + for (OrderRefundPassList refundPassList : orderRefundPassList) { + AppUser appUser = appUserClient.getAppUserById(refundPassList.getAppUserId()); + refundPassList.setUserName(appUser.getName()); + refundPassList.setPhone(appUser.getPhone()); + } + return orderRefundPassList; + } + + + /** + * 售后订单审核操作 + * @param id + * @param status + * @param passRemark + * @return + */ + @Override + public R authPassStatus(Long id, Integer status, String passRemark) { + RefundPass refundPass = this.getById(id); + if(refundPass.getPassStatus() != 1){ + return R.fail("不能重复操作"); + } + refundPass.setPassStatus(status); + //退货退款 + if(refundPass.getRefundMethod() == 1 && 2 == status){ + refundPass.setStatus(4); + } + if(refundPass.getRefundMethod() == 2 && 2 == status){ + refundPass.setStatus(2); + } + refundPass.setPassRemark(passRemark); + this.updateById(refundPass); + //仅退款的售后需要将支付金额原路返回,然后再扣减支付获得的积分 + if(refundPass.getRefundMethod() == 2 && 2 == status){ + Order order = orderService.getById(refundPass.getOrderId()); + order.setOrderStatus(6); + orderService.updateById(order); + //返回订单支付金额和回退积分和会员等级 + orderService.refundPayMoney(order); + } + return R.ok(); + } + + + /** + * 售后确认收货操作 + * @param id + * @return + */ + @Override + public R refundPassReceive(Long id) { + RefundPass refundPass = this.getById(id); + if(refundPass.getPassStatus() != 2){ + return R.fail("操作失败"); + } + if(refundPass.getStatus() != 5){ + return R.fail("操作失败"); + } + refundPass.setStatus(2); + this.updateById(refundPass); + //仅退款的售后需要将支付金额原路返回,然后再扣减支付获得的积分 + Order order = orderService.getById(refundPass.getOrderId()); + order.setOrderStatus(6); + orderService.updateById(order); + //返回订单支付金额和回退积分和会员等级 + orderService.refundPayMoney(order); + return R.ok(); + } + + + /** + * 获取售后详情 + * @param id + * @return + */ + @Override + public RefundPassInfo getRefundPassInfo(Long id) { + RefundPass refundPass = this.getById(id); + OrderInfoVo orderInfo = orderService.getOrderInfo(refundPass.getOrderId()); + RefundPassInfo refundPassInfo = new RefundPassInfo(); + BeanUtils.copyBeanProp(refundPassInfo, orderInfo); + refundPassInfo.setId(id.toString()); + refundPassInfo.setPassStatus(refundPassInfo.getPassStatus()); + refundPassInfo.setPassRemark(refundPassInfo.getPassRemark()); + refundPassInfo.setPassCreateTime(refundPass.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + refundPassInfo.setRefundMethod(refundPass.getRefundMethod()); + refundPassInfo.setRefundReason(refundPass.getRefundReason()); + refundPassInfo.setUserRemark(refundPass.getUserRemark()); + refundPassInfo.setPics(refundPass.getPics()); + return refundPassInfo; + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassList.java new file mode 100644 index 0000000..9d4a048 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassList.java @@ -0,0 +1,34 @@ +package com.ruoyi.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/12/16 16:09 + */ +@Data +@ApiModel +public class OrderRefundPassList { + @ApiModelProperty("售后数据id") + private String id; + @ApiModelProperty("订单编号") + private String orderNumber; + @ApiModelProperty("下单用户") + private String userName; + @ApiModelProperty("联系电话") + private String phone; + @ApiModelProperty("申请时间") + private String createTime; + @ApiModelProperty("售后类型(1退货退款2仅退款)") + private Integer refundMethod; + @ApiModelProperty("申请原因") + private String refundReason; + @ApiModelProperty("状态(1待审核2同意3拒绝)") + private Integer passStatus; + /** + * 用户id + */ + private Long appUserId; +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassListVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassListVo.java new file mode 100644 index 0000000..2b9ea96 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderRefundPassListVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.order.vo; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/12/16 16:09 + */ +@Data +@ApiModel +public class OrderRefundPassListVo extends BasePage { + @ApiModelProperty("订单编号") + private String code; + @ApiModelProperty("下单用户姓名") + private String name; + @ApiModelProperty("联系电话") + private String phone; + @ApiModelProperty("售后类型(1退货退款2仅退款)") + private Integer refundMethod; + @ApiModelProperty("售后状态(1待审核2已完成3已拒绝4待退货5待平台收货)") + private Integer status; +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/RefundPassInfo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/RefundPassInfo.java new file mode 100644 index 0000000..36e81d5 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/RefundPassInfo.java @@ -0,0 +1,65 @@ +package com.ruoyi.order.vo; + +import com.ruoyi.order.util.vo.QueryKD100Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zhibing.pu + * @Date 2024/12/16 17:11 + */ +@Data +@ApiModel +public class RefundPassInfo { + @ApiModelProperty("数据id") + private String id; + @ApiModelProperty("订单编号") + private String orderNumber; + @ApiModelProperty("下单时间") + private String createTime; + @ApiModelProperty("订单状态(1待发货2待收货3待使用4已完成5已取消6已退款7售后中8已评价)") + private Integer orderStatus; + @ApiModelProperty("下单用户") + private String userName; + @ApiModelProperty("联系电话") + private String phone; + @ApiModelProperty("订单类型") + private String orderType; + @ApiModelProperty("核销门店") + private String shopName; + @ApiModelProperty("支付方式(1=微信,2=余额,3=积分)") + private Integer paymentMethod; + @ApiModelProperty("订单总金额") + private BigDecimal totalAmount; + @ApiModelProperty("优惠券") + private String couponName; + @ApiModelProperty("抵扣金额") + private BigDecimal discountAmount; + @ApiModelProperty("快递费") + private BigDecimal expressAmount; + @ApiModelProperty("支付金额") + private BigDecimal paymentAmount; + @ApiModelProperty("获得积分") + private Integer point; + @ApiModelProperty("商品数量") + private Integer goodsNum; + @ApiModelProperty("商品信息") + private String goodsJson; + @ApiModelProperty("审核状态(1待审核2同意3拒绝)") + private Integer passStatus; + @ApiModelProperty("审核注释") + private Integer passRemark; + @ApiModelProperty("售后申请时间") + private String passCreateTime; + @ApiModelProperty("售后类型(1退货退款2仅退款)") + private Integer refundMethod; + @ApiModelProperty("申请原因") + private String refundReason; + @ApiModelProperty("备注") + private String userRemark; + @ApiModelProperty("申请图片") + private String pics; +} diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/RefundPassMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/RefundPassMapper.xml index 2033fa7..270358b 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/RefundPassMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/RefundPassMapper.xml @@ -1,7 +1,38 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.account.mapper.RefundPassMapper"> +<mapper namespace="com.ruoyi.order.mapper.RefundPassMapper"> - + <select id="getOrderRefundPassList" resultType="com.ruoyi.order.vo.OrderRefundPassList"> + select + a.id, + b.order_number as orderNumber, + b.app_user_id as appUserId, + DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%m:%s') as createTime, + a.refund_method as refundMethod, + a.refund_reason as refundReason, + a.pass_status as passStatus + from t_refund_pass a + left join t_order b on (a.order_id = b.id) + where a.del_flag = 0 + <if test="null != code and '' != code"> + and b.order_number like CONCAT('%', #{code}, '%') + </if> + <if test="null != appUserIds and appUserIds.size() > 0"> + and b.app_user_id in + <foreach collection="appUserIds" item="item" index="index" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="null != refundMethod"> + and a.refund_method = #{refundMethod} + </if> + <if test="null != status"> + and a.status = #{status} + </if> + <if test="null != shopId"> + and b.shop_id = #{shopId} and b.order_type = 1 + </if> + order by a.create_time desc + </select> </mapper> diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java index 18a4626..2e4356d 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java @@ -1,10 +1,13 @@ package com.ruoyi.other.controller; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.service.BaseSettingService; +import com.ruoyi.other.vo.RefundPassSettingVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -56,7 +59,33 @@ } + @PostMapping("/setRefundPassSetting") + @ApiOperation(value = "保存售后设置", tags = {"管理后台-售后管理"}) + public R setRefundPassSetting(@RequestBody RefundPassSettingVo settingVo){ + BaseSetting one = baseSettingService.getOne(new LambdaQueryWrapper<BaseSetting>().eq(BaseSetting::getId, 5)); + if(null == one){ + one = new BaseSetting(); + one.setId(5); + one.setContent(JSON.toJSONString(settingVo)); + baseSettingService.save(one); + }else{ + one.setContent(JSON.toJSONString(settingVo)); + baseSettingService.updateById(one); + } + return R.ok(); + } + + @PostMapping("/getRefundPassSetting") + @ApiOperation(value = "获取售后设置", tags = {"管理后台-售后管理"}) + public R<RefundPassSettingVo> getRefundPassSetting(){ + BaseSetting one = baseSettingService.getOne(new LambdaQueryWrapper<BaseSetting>().eq(BaseSetting::getId, 5)); + if(null != one){ + RefundPassSettingVo refundPassSettingVo = JSON.parseObject(one.getContent(), RefundPassSettingVo.class); + return R.ok(refundPassSettingVo); + } + return R.ok(); + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java index 9867001..12d044e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java @@ -7,10 +7,14 @@ import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.*; import com.ruoyi.other.api.vo.GetGoodsBargainPrice; import com.ruoyi.other.service.*; +import com.ruoyi.other.vo.ShopGoodsList; +import com.ruoyi.other.vo.ShopGoodsListVo; import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -195,5 +199,9 @@ } + + + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java index 48dfc60..00f0857 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java @@ -3,9 +3,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.other.api.domain.GoodsShop; import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds; import com.ruoyi.other.service.GoodsShopService; +import com.ruoyi.other.vo.ShopGoodsList; +import com.ruoyi.other.vo.ShopGoodsListVo; +import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -21,7 +26,7 @@ */ @RestController @RequestMapping("/goods-shop") -public class GoodsShopController { +public class GoodsShopController extends BaseController { @Resource private GoodsShopService goodsShopService; @@ -54,5 +59,20 @@ .in(goodsIds.getGoodsIds() !=null ,GoodsShop::getGoodsId, goodsIds.getGoodsIds())); return R.ok(list); } + + + + @ResponseBody + @GetMapping("/getShopGoodsList") + @ApiOperation(value = "获取商品管理列表", tags = {"门店后台-商品管理"}) + public TableDataInfo<ShopGoodsList> getShopGoodsList(ShopGoodsListVo shopGoodsListVo){ + startPage(); + List<ShopGoodsList> shopGoodsList = goodsShopService.getShopGoodsList(shopGoodsListVo); + return getDataTable(shopGoodsList); + } + + + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsShopMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsShopMapper.java index 981cb2f..cdaa202 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsShopMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsShopMapper.java @@ -2,6 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.other.api.domain.GoodsShop; +import com.ruoyi.other.vo.ShopGoodsList; +import com.ruoyi.other.vo.ShopGoodsListVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -12,5 +17,17 @@ * @since 2024-11-20 */ public interface GoodsShopMapper extends BaseMapper<GoodsShop> { - + + + /** + * 获取门店授权的服务商品 + * @param shopId + * @param goodsId + * @param goodsName + * @param goodsCategoryId + * @return + */ + List<ShopGoodsList> getShopGoodsList(@Param("shopId") Integer shopId, @Param("goodsId") String goodsId, + @Param("goodsName") String goodsName, @Param("goodsCategoryId") Integer goodsCategoryId); + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsShopService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsShopService.java index d0e6b12..fcad894 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsShopService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsShopService.java @@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.GoodsShop; +import com.ruoyi.other.vo.ShopGoodsList; +import com.ruoyi.other.vo.ShopGoodsListVo; + +import java.util.List; /** * <p> @@ -12,5 +16,11 @@ * @since 2024-11-20 */ public interface GoodsShopService extends IService<GoodsShop> { - + + /** + * 获取门店授权的服务商品 + * @param shopGoodsListVo + * @return + */ + List<ShopGoodsList> getShopGoodsList(ShopGoodsListVo shopGoodsListVo); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsShopServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsShopServiceImpl.java index 19363c4..233b2b1 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsShopServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsShopServiceImpl.java @@ -1,10 +1,18 @@ package com.ruoyi.other.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.mapper.GoodsShopMapper; import com.ruoyi.other.api.domain.GoodsShop; import com.ruoyi.other.service.GoodsShopService; +import com.ruoyi.other.vo.ShopGoodsList; +import com.ruoyi.other.vo.ShopGoodsListVo; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -16,5 +24,25 @@ */ @Service public class GoodsShopServiceImpl extends ServiceImpl<GoodsShopMapper, GoodsShop> implements GoodsShopService { - + + @Resource + private TokenService tokenService; + + @Resource + private SysUserClient sysUserClient; + + + + /** + * 获取门店授权的服务商品 + * @param shopGoodsListVo + * @return + */ + @Override + public List<ShopGoodsList> getShopGoodsList(ShopGoodsListVo shopGoodsListVo) { + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserClient.getSysUser(userid).getData(); + List<ShopGoodsList> shopGoodsList = this.baseMapper.getShopGoodsList(sysUser.getObjectId(), shopGoodsListVo.getId(), shopGoodsListVo.getName(), shopGoodsListVo.getGoodsCategoryId()); + return shopGoodsList; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/RefundPassSettingVo.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/RefundPassSettingVo.java new file mode 100644 index 0000000..04206a8 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/RefundPassSettingVo.java @@ -0,0 +1,22 @@ +package com.ruoyi.other.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/12/16 15:55 + */ +@Data +@ApiModel +public class RefundPassSettingVo { + @ApiModelProperty("收货人姓名") + private String name; + @ApiModelProperty("收货人电话") + private String phone; + @ApiModelProperty("收货地址") + private String address; + @ApiModelProperty("售后周期") + private Integer days; +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsList.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsList.java new file mode 100644 index 0000000..53c21eb --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsList.java @@ -0,0 +1,20 @@ +package com.ruoyi.other.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/12/16 17:32 + */ +@Data +@ApiModel +public class ShopGoodsList { + @ApiModelProperty("商品id") + private String id; + @ApiModelProperty("商品名称") + private String name; + @ApiModelProperty("商品分类") + private String goodsCategory; +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsListVo.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsListVo.java new file mode 100644 index 0000000..37052b1 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopGoodsListVo.java @@ -0,0 +1,21 @@ +package com.ruoyi.other.vo; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/12/16 17:32 + */ +@Data +@ApiModel +public class ShopGoodsListVo extends BasePage { + @ApiModelProperty("商品id") + private String id; + @ApiModelProperty("商品名称") + private String name; + @ApiModelProperty("商品分类id") + private Integer goodsCategoryId; +} diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsShopMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsShopMapper.xml new file mode 100644 index 0000000..b752a2b --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsShopMapper.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.other.mapper.GoodsShopMapper"> + + <select id="getShopGoodsList" resultType="com.ruoyi.other.vo.ShopGoodsList"> + select + a.id, + a.name, + b.name as goodsCategory + from t_goods a + left join t_goods_category b on (a.goods_category_id = b.id) + where a.type = 1 and a.del_flag = 0 and a.status = 2 and (a.appoint_store = 2 or a.id in (select goods_id from t_goods_shop where shop_id = #{shopId})) + <if test="null != goodsId and '' != goodsId"> + and a.id like CONCAT('%', #{goodsId}, '%') + </if> + <if test="null != goodsName and '' != goodsName"> + and a.name like CONCAT('%', #{goodsName}, '%') + </if> + <if test="null != goodsCategoryId"> + and a.goods_category_id = #{goodsCategoryId} + </if> + order by a.create_time desc + </select> +</mapper> \ No newline at end of file -- Gitblit v1.7.1