springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
@@ -348,4 +348,74 @@ public R settle(String settleDate){ return R.ok(umfPayUtil.settle(settleDate)); } @PostMapping("flowerWxNotify") public void flowerWxNotify(HttpServletRequest request, HttpServletResponse response) { log.error("微信支付回调start"); String inputLine = ""; String notityXml = ""; try { while ((inputLine = request.getReader().readLine()) != null) { notityXml += inputLine; } // 关闭流 request.getReader().close(); log.error("微信回调内容信息:" + notityXml); // 解析成Json org.json.JSONObject xmlJson = XML.toJSONObject(notityXml); if (StringUtils.isNotEmpty(xmlJson.toString())) { JSONObject resultData = JSON.parseObject(xmlJson.get("xml").toString()); // 成功支付订单 if (resultData.getString("result_code").equals("SUCCESS") && resultData.getString("return_code").equals("SUCCESS")) { WxPayNotifyOrderDTO notifyOrderDTO = new WxPayNotifyOrderDTO(); // 订单号 String orderTradeNo = resultData.getString("out_trade_no"); notifyOrderDTO.setOrderTradeNo(orderTradeNo); // 微信支付订单号 String wxTradeNo = resultData.getString("transaction_id"); notifyOrderDTO.setWxTradeNo(wxTradeNo); // 订单金额 String totalFee = resultData.getString("total_fee"); notifyOrderDTO.setTotalFee(totalFee); // 支付完成时间 String payTime = resultData.getString("time_end"); notifyOrderDTO.setPayTime(payTime); // 现金支付金额 String cashFee = resultData.getString("cash_fee"); notifyOrderDTO.setCashFee(cashFee); // 根据订单号修改订单信息 communityService.wxOrderPayNotify(notifyOrderDTO); // 封装 返回值 StringBuffer buffer = new StringBuffer(); buffer.append("<xml>"); buffer.append("<return_code>SUCCESS</return_code>"); buffer.append("<return_msg>OK</return_msg>"); buffer.append("</xml>"); // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功 PrintWriter writer = response.getWriter(); // 返回 writer.print(buffer.toString()); } else {// 未成功支付订单 // 封装 返回值 StringBuffer buffer = new StringBuffer(); buffer.append("<xml>"); buffer.append("<return_code>FAIL</return_code>"); buffer.append("<return_msg>FAIL</return_msg>"); buffer.append("</xml>"); // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功 PrintWriter writer = response.getWriter(); // 返回 writer.print(buffer.toString()); } } } catch (IOException e) { e.printStackTrace(); } } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopOrderSearchDTO.java
@@ -28,7 +28,7 @@ private String goodsName; @ApiModelProperty(value = "店铺名称", example = "小二的店") private String storeName; @ApiModelProperty(value = "订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)", example = "1") @ApiModelProperty(value = "订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款)", example = "1") private Integer status; @ApiModelProperty(value = "下单时间-开始", example = "2021-4-10 10:38:25") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @@ -46,4 +46,7 @@ private Long storeId; @ApiModelProperty(hidden = true) private Long storeUserId; @ApiModelProperty("配送方式(1.自提 2.快递)") private Integer deliveryType; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderCountVO.java
New file @@ -0,0 +1,31 @@ package com.panzhihua.common.model.vos.shop; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * @auther yh * @create 2022-11-08 17:25:45 * @describe 统计订单数VO */ @Data @ApiModel("统计订单数VO") public class ComShopOrderCountVO { /** * 订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款) */ @ApiModelProperty("订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款 8.总订单)") private Integer status; /** * 订单数量 */ @ApiModelProperty("订单数量") private Integer amount; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderSearchVO.java
@@ -94,4 +94,7 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; private String address; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -10954,4 +10954,31 @@ */ @PostMapping("/shopFlower/pageOrderByStoreId") R pageOrderByStoreId(@RequestBody PageComFlowerOrderListDTO pageComFlowerOrderListDTO); /** * 微信支付订单回调 * * @param wxPayNotifyOrderDTO * 订单支付回调参数 */ @PostMapping("/shopFlower/wxOrderPayNotify") void wxOrderPayNotifyFlower(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO); /** * 点击去支付订单 * * @param orderPayDTO * 请求参数 * @return 支付对象 */ @PostMapping("/shopFlower/wxPay") R wxPayFlower(@RequestBody OrderPayDTO orderPayDTO); /** * 统计查询订单数量 * @param deliveryType * @return */ @GetMapping("/shopFlower/selectCountByDeliveryType") R selectCountByDeliveryType(Integer deliveryType); } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ShopFlowerApi.java
@@ -3,10 +3,10 @@ import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO; import com.panzhihua.common.model.dtos.shop.PageComShopFlowerGoodsDTO; import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; import com.panzhihua.common.model.vos.shop.AddShopFlowerGoodsVO; import com.panzhihua.common.model.vos.shop.PageShopGoodsVO; import com.panzhihua.common.model.vos.shop.*; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.validated.AddGroup; @@ -104,22 +104,25 @@ return communityService.getAllGoodsCategories(); } /*@ApiOperation(value = "订单_分页列表", response = ComShopOrderSearchVO.class) @GetMapping("/order/selectCountByDeliveryType") public R selectCountByDeliveryType(Integer deliveryType){ return communityService.selectCountByDeliveryType(deliveryType); } @ApiOperation(value = "商家查询 订单_分页列表", response = ComShopOrderSearchVO.class) @PostMapping("/order/page") public R page(@RequestBody @Validated PageComShopOrderSearchDTO pageComShopOrderSearchDTO) { // pageComShopOrderSearchDTO.setUserId(this.getUserId()); ClazzUtils.setIfStringIsEmpty(pageComShopOrderSearchDTO); return communityService.pageShopOrder(pageComShopOrderSearchDTO); pageComShopOrderSearchDTO.setStoreUserId(this.getUserId()); return communityService.pageShopOrderFlower(pageComShopOrderSearchDTO); } @ApiOperation(value = "订单_详细", response = ComShopOrderPageVO.class) @ApiOperation(value = "订单_详细", response = ComShopFlowerOrderPageVO.class) @GetMapping("/order/detail") @ShopOperLog(operType = 11) public R detail(@RequestParam("orderId") Long orderId) { return communityService.orderDetail(orderId); return communityService.orderDetailFlower(orderId); } @ApiOperation(value = "订单_导出表格") /*@ApiOperation(value = "订单_导出表格") @PostMapping("/order/export") @ShopOperLog(operType = 12) public R export(@RequestBody ComShopOrderExportDTO comShopOrderExportDTO) { springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopFlowerApi.java
@@ -409,7 +409,7 @@ * 订单支付回调参数 */ @PostMapping("/wxOrderPayNotify") public void wxOrderPayNotify(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO) { public void wxOrderPayNotifyFlower(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO) { comShopFlowerOrderService.wxOrderPayNotify(wxPayNotifyOrderDTO); } @@ -421,10 +421,15 @@ * @return 支付对象 */ @PostMapping("/wxPay") public R wxPay(@RequestBody OrderPayDTO orderPayDTO) { public R wxPayFlower(@RequestBody OrderPayDTO orderPayDTO) { return comShopFlowerOrderService.wxPay(orderPayDTO); } @GetMapping("/selectCountByDeliveryType") public R selectCountByDeliveryType(Integer deliveryType){ return comShopFlowerOrderService.selectCountByDeliveryType(deliveryType); } /** * 统计用户订单数量 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopFlowerOrderDAO.java
@@ -7,6 +7,7 @@ import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO; import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderPageVO; import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderStoreListVO; import com.panzhihua.common.model.vos.shop.ComShopOrderCountVO; import com.panzhihua.common.model.vos.shop.ComShopOrderSearchVO; import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO; import org.apache.ibatis.annotations.Mapper; @@ -58,4 +59,11 @@ void updateOrderStatus(@Param("deliveryId") Long deliveryId, @Param("serviceTime") Date serviceTime, @Param("status") int status); IPage<ComShopFlowerOrderStoreListVO> pageOrderByStoreId(@Param("page") Page page,@Param("comOrderListDTO") PageComFlowerOrderListDTO comOrderListDTO); /** * 根据类型统计订单数量 * @param deliveryType * @return */ List<ComShopOrderCountVO> selectCountByDeliveryType(@Param("deliveryType") Integer deliveryType); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopFlowerOrderPayDO.java
@@ -88,7 +88,7 @@ /** * 原始订单id */ private String orderId; private Long orderId; /** * 退款订单号 */ @@ -96,11 +96,11 @@ /** * 退款状态(1.处理中 2.退款成功 3.退款失败 4.已取消 5.退款中) */ private String refundStatus; private Integer refundStatus; /** * 类型(1.支付 2.退款 3.取消) */ private String payType; private Integer payType; /** * 支付状态(1.未支付 2.已支付) springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopFlowerOrderService.java
@@ -191,4 +191,11 @@ * @return */ R pageOrderByStoreId(PageComFlowerOrderListDTO pageComFlowerOrderListDTO); /** * 查询订单总数 * @param deliveryType * @return */ R selectCountByDeliveryType(Integer deliveryType); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java
@@ -1,5 +1,6 @@ package com.panzhihua.service_community.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -14,6 +15,7 @@ import com.panzhihua.common.utlis.OrderNoUtils; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.common.utlis.WxPayUtils; import com.panzhihua.common.utlis.wx.WXPayUtil; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.*; import com.panzhihua.service_community.service.ComShopFlowerOrderService; @@ -26,10 +28,8 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.*; import java.util.stream.Collectors; import static java.util.Objects.nonNull; @@ -41,7 +41,7 @@ @Slf4j @Service public class ComShopFlowerOrderServiceImpl extends ServiceImpl<ComShopFlowerOrderDAO, ComShopFlowerOrderDO> implements ComShopFlowerOrderService { implements ComShopFlowerOrderService { @Resource private ComShopFlowerGoodsDAO comShopFlowerGoodsDAO; @@ -67,22 +67,21 @@ private ComShopFlowerEvaluateDAO comShopFlowerEvaluateDAO; @Value("${hc_min.app.isTest}") @Value("${hcMin.app.isTest}") private Boolean isTest; @Value("${hc_min.app.appid}") @Value("${hcMin.app.appid}") private String appid; @Value("${hc_min.app.payKey}") @Value("${hcMin.app.payKey}") private String payKey; @Value("${hc_min.app.mchId}") @Value("${hcMin.app.mchId}") private String mchId; @Value("${hc_min.app.notifyUrl}") @Value("${hcMin.app.notifyUrl}") private String notifyUrl; /** * 订单预览 * * @param orderPreviewDTO * 请求参数 * @param orderPreviewDTO 请求参数 * @return 订单预览数据 */ @Override @@ -99,8 +98,8 @@ if (orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.details)) {// 详情页提交 // 查询商品信息 ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", orderPreviewDTO.getGoodsId()) .eq("status", ComShopGoodsDO.status.sell).eq("delete_status", ComShopGoodsDO.deleteStatus.no)); comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", orderPreviewDTO.getGoodsId()) .eq("status", ComShopGoodsDO.status.sell).eq("delete_status", ComShopGoodsDO.deleteStatus.no)); if (goodsDO == null) { return R.fail("商品已下架或已删除"); } @@ -112,7 +111,7 @@ if (goodsAttrDO == null) { return R.fail("商品规格不存在"); } if (goodsAttrDO.getSale() < orderPreviewDTO.getBuyNum()){ if (goodsAttrDO.getSale() < orderPreviewDTO.getBuyNum()) { return R.fail("该规格库存不足,无法下单"); } @@ -168,8 +167,8 @@ // 查询默认收货地址 ComShopFlowerUserAddressDO userDefaultAddressDO = comShopFlowerUserAddressDAO.selectOne(new QueryWrapper<ComShopFlowerUserAddressDO>().eq("delete_status", 2) .eq("user_id", orderPreviewDTO.getUserId()).eq("is_default", ComShopUserAddressDO.isDefault.yes)); comShopFlowerUserAddressDAO.selectOne(new QueryWrapper<ComShopFlowerUserAddressDO>().eq("delete_status", 2) .eq("user_id", orderPreviewDTO.getUserId()).eq("is_default", ComShopUserAddressDO.isDefault.yes)); // 查询用户收货地址中的默认地址 if (userDefaultAddressDO != null) { @@ -180,10 +179,10 @@ // 查询上次购买记录的收货地址 // 查询到用户上一笔订单 List<ComShopFlowerOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopFlowerOrderDO>() .eq("delete_status", 2).eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); .eq("delete_status", 2).eq("user_id", orderPreviewDTO.getUserId()).orderByDesc("create_at")); if (shopOrders != null && shopOrders.size() > 0) { ComShopFlowerUserAddressDO userAddressDO = comShopFlowerUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); comShopFlowerUserAddressDAO.selectById(shopOrders.get(0).getReceiverId()); if (userAddressDO != null) { ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO(); BeanUtils.copyProperties(userAddressDO, userAddressVO); @@ -198,8 +197,7 @@ /** * 创建订单 * * @param orderCreateDTO * 创建订单请求参数 * @param orderCreateDTO 创建订单请求参数 * @return 创建结果 */ @Transactional(rollbackFor = Exception.class) @@ -228,8 +226,8 @@ for (ComShopOrderCreateGoodsDTO createGoodsDTO : orderCreateDTO.getOrderGoodsList()) { // 查询当前商品信息 ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", createGoodsDTO.getGoodsId()) .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); comShopFlowerGoodsDAO.selectOne(new QueryWrapper<ComShopFlowerGoodsDO>().eq("id", createGoodsDTO.getGoodsId()) .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); if (goodsDO == null) { log.error("未查询到商品信息,商品已下架活已删除,商品id" + createGoodsDTO.getGoodsId()); continue; @@ -247,11 +245,11 @@ ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(createGoodsDTO.getGoodsAttrId()); if (goodsAttrDO == null) { log.error( "未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId()); "未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId()); continue; } if (goodsAttrDO.getSale() < createGoodsDTO.getNum()){ if (goodsAttrDO.getSale() < createGoodsDTO.getNum()) { return R.fail("该规格库存不足,无法下单"); } orderGoodsDO.setGoodsAttrId(goodsAttrDO.getId()); @@ -263,7 +261,7 @@ orderGoodsDOList.add(orderGoodsDO); // 将商品金额计算到订单总金额 orderTotal = orderTotal .add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); .add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount()))); } } // 如果是购物车提交,需要将购物车内商品移除 @@ -317,7 +315,7 @@ } // 调用wx支付 String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderCreateDTO.getOpenId(), orderNo, money,null); orderNo, money, null); log.info("微信支付返回参数:" + xml); shopOrderVO.setPayResult(xml); } catch (Exception e) { @@ -329,8 +327,7 @@ /** * 分页查询用户订单列表 * * @param comOrderListDTO * 请求参数 * @param comOrderListDTO 请求参数 * @return 查询结果 */ @Override @@ -342,7 +339,7 @@ List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); // 查询订单下商品信息 List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", orderVo.getOrderNo())); .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", orderVo.getOrderNo())); if (!orderGoodsDOList.isEmpty()) { orderGoodsDOList.forEach(orderGoods -> { ComShopFlowerOrderGoodsVO orderGoodsVO = new ComShopFlowerOrderGoodsVO(); @@ -375,8 +372,7 @@ /** * 根据订单id查询订单详情 * * @param orderId * 订单id * @param orderId 订单id * @return 订单详情 */ @Override @@ -402,7 +398,7 @@ List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); // 查询订单下商品信息 List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", shopOrderDO.getOrderNo())); .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no", shopOrderDO.getOrderNo())); StringBuilder sbr = new StringBuilder(); if (!orderGoodsDOList.isEmpty()) { orderGoodsDOList.forEach(orderGoods -> { @@ -414,7 +410,7 @@ // 查询商品信息判断商品状态 ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectById(orderGoods.getGoodsId()); if (goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.deleteStatus.yes) || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.status.recovery)) { || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.status.recovery)) { orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.ysc); } else if (goodsDO.getStatus().equals(ComShopFlowerGoodsDO.status.lower)) { orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.yxj); @@ -428,7 +424,7 @@ orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttrName()); } orderGoodsVOS.add(orderGoodsVO); sbr.append(orderGoods.getGoodsName() + " "); sbr.append(orderGoods.getGoodsName()).append(" "); }); } orderVO.setOrderGoodsVOList(orderGoodsVOS); @@ -444,8 +440,8 @@ // 操作日志 List<ComShopFlowerOrderOperateDO> listOperLog = comShopFlowerOrderOperateDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderOperateDO>() .eq(ComShopFlowerOrderOperateDO::getOrderNo, shopOrderDO.getOrderNo())); comShopFlowerOrderOperateDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderOperateDO>() .eq(ComShopFlowerOrderOperateDO::getOrderNo, shopOrderDO.getOrderNo())); List<ComShopFlowerOrderOperateVO> listOperLogVO = new ArrayList<>(listOperLog.size()); listOperLog.forEach(logDO -> { ComShopFlowerOrderOperateVO copyVO = new ComShopFlowerOrderOperateVO(); @@ -454,20 +450,19 @@ }); orderVO.setLogs(listOperLogVO); Long pointId = shopOrderDO.getPointId(); if (null!= pointId){ if (null != pointId) { ConvenientElevatingPointDO convenientElevatingPointDO = convenientElevatingPointDAO.selectById(pointId); ConvenientElevatingPointVO convenientElevatingPointVO = new ConvenientElevatingPointVO(); BeanUtils.copyProperties(convenientElevatingPointVO,convenientElevatingPointDO); BeanUtils.copyProperties(convenientElevatingPointVO, convenientElevatingPointDO); orderVO.setConvenientElevatingPointVO(convenientElevatingPointVO); } //已完成、已退款才有评论 if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()){ ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(shopOrderDO.getOrderNo()); if (nonNull(comShopFlowerEvaluateVO)){ if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()) { ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(shopOrderDO.getOrderNo()); if (nonNull(comShopFlowerEvaluateVO)) { orderVO.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO); } } return R.ok(orderVO); @@ -476,8 +471,7 @@ /** * 根据订单id取消订单 * * @param comShopOrderQueryDTO * 订单信息 * @param comShopOrderQueryDTO 订单信息 * @return 取消结果 */ @Transactional(rollbackFor = Exception.class) @@ -493,6 +487,45 @@ } // 取消订单 shopOrderDO.setStatus(ComShopFlowerOrderDO.status.yqx); //退款 String refundNo = WXPayUtil.generateNonceStr(); try { String refundStr = WxPayUtils.refund(appid, mchId, shopOrderDO.getWxTardeNo(), shopOrderDO.getPayAmount(), shopOrderDO.getPayAmount(), refundNo, isTest); log.info("退款请求接口返回参数:{}", refundStr); Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr); if (CollUtil.isNotEmpty(mapResult)) { String return_code = (String) mapResult.get("return_code"); String result_code = (String) mapResult.get("result_code"); String return_msg = mapResult.get("return_msg"); ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO(); orderPayDO.setOrderNo(shopOrderDO.getOrderNo()); orderPayDO.setOrderAmount(shopOrderDO.getTotalAmount()); orderPayDO.setPayTime(new Date()); orderPayDO.setStoreId(shopOrderDO.getStoreId()); orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType()); orderPayDO.setOrderId(shopOrderDO.getId()); orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.qx); if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) { //退款成功 // 添加订单支付记录表 orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg); } else { //退款失败 // 添加订单支付记录表 orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb); shopOrderDO.setRemark(shopOrderDO.getRemark() + "_" + return_msg); } comShopFlowerOrderPayDAO.insert(orderPayDO); } } catch (Exception e) { log.error("申请退款失败," + e.getMessage()); e.printStackTrace(); } if (this.baseMapper.updateById(shopOrderDO) > 0) { // 添加订单操作记录 ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO(); @@ -517,8 +550,7 @@ /** * 根据订单id删除订单 * * @param orderId * 订单id * @param orderId 订单id * @return 删除结果 */ @Override @@ -529,7 +561,7 @@ return R.fail("未查询到订单"); } if (!shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.ywc) && !shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.yqx)) { && !shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.yqx)) { return R.fail("该订单状态不可删除"); } @@ -544,10 +576,8 @@ /** * 根据订单id确认收货 * * @param orderId * 订单id * @param phone * 手机号 * @param orderId 订单id * @param phone 手机号 * @return 确认结果 */ @Transactional(rollbackFor = Exception.class) @@ -587,8 +617,7 @@ /** * 统计用户订单数量 * * @param userId * 用户id * @param userId 用户id * @return 统计结果 */ @Override @@ -623,8 +652,7 @@ /** * 订单发货 * * @param orderShipDTO * 订单发货信息 * @param orderShipDTO 订单发货信息 * @return 发货结果 */ @Override @@ -827,8 +855,7 @@ /** * 微信支付订单回调 * * @param wxPayNotifyOrderDTO * 订单支付回调参数 * @param wxPayNotifyOrderDTO 订单支付回调参数 */ @Transactional(rollbackFor = Exception.class) @Override @@ -842,7 +869,7 @@ log.info("微信订单支付回调开始查询订单"); // 查询订单 ComShopFlowerOrderDO shopOrderDO = this.baseMapper.selectOne(new QueryWrapper<ComShopFlowerOrderDO>().lambda() .eq(ComShopFlowerOrderDO::getOrderNo, wxPayNotifyOrderDTO.getOrderTradeNo())); .eq(ComShopFlowerOrderDO::getOrderNo, wxPayNotifyOrderDTO.getOrderTradeNo())); if (shopOrderDO == null) { log.error("未查询到支付订单,订单回调失败,订单号:" + wxPayNotifyOrderDTO.getOrderTradeNo()); return; @@ -853,13 +880,13 @@ shopOrderDO.setPayAmount(BigDecimal.valueOf(Double.valueOf(wxPayNotifyOrderDTO.getCashFee()) / 100)); shopOrderDO.setWxTardeNo(wxPayNotifyOrderDTO.getWxTradeNo()); shopOrderDO.setPayTime( DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(), new SimpleDateFormat("yyyyMMddHHmmss"))); DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(), new SimpleDateFormat("yyyyMMddHHmmss"))); this.baseMapper.updateById(shopOrderDO); // 查询订单商品 List<ComShopFlowerOrderGoodsDO> orderGoodsList = comShopFlowerOrderGoodsDAO.selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().lambda() .eq(ComShopFlowerOrderGoodsDO::getOrderNo, shopOrderDO.getOrderNo())); comShopFlowerOrderGoodsDAO.selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().lambda() .eq(ComShopFlowerOrderGoodsDO::getOrderNo, shopOrderDO.getOrderNo())); if (!orderGoodsList.isEmpty()) { int goodsNub = 0; for (ComShopFlowerOrderGoodsDO orderGood : orderGoodsList) { @@ -907,14 +934,17 @@ orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); orderPayDO.setPayAmount(shopOrderDO.getPayAmount()); orderPayDO.setPayTime(shopOrderDO.getPayTime()); orderPayDO.setStoreId(shopOrderDO.getStoreId()); orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType()); orderPayDO.setOrderId(shopOrderDO.getId()); orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.zf); comShopFlowerOrderPayDAO.insert(orderPayDO); } /** * 订单去支付 * * @param orderPayDTO * 请求参数 * @param orderPayDTO 请求参数 * @return 支付对象 */ public R wxPay(OrderPayDTO orderPayDTO) { @@ -922,7 +952,7 @@ ComShopFlowerOrderVO shopOrderVO = new ComShopFlowerOrderVO(); // 查询订单 ComShopFlowerOrderDO orderDO = comShopFlowerOrderDAO.selectOne( new QueryWrapper<ComShopFlowerOrderDO>().lambda().eq(ComShopFlowerOrderDO::getOrderNo, orderPayDTO.getOrderNo())); new QueryWrapper<ComShopFlowerOrderDO>().lambda().eq(ComShopFlowerOrderDO::getOrderNo, orderPayDTO.getOrderNo())); if (orderDO == null) { return R.fail("订单不存在"); } @@ -933,7 +963,7 @@ } // 调用wx支付 String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderPayDTO.getOpenId(), orderDO.getOrderNo(), money,null); orderDO.getOrderNo(), money, null); log.info("微信支付返回参数:" + xml); shopOrderVO.setPayResult(xml); } catch (Exception e) { @@ -948,9 +978,31 @@ @Override public R pageOrderByStoreId(PageComFlowerOrderListDTO pageComFlowerOrderListDTO) { Page page = new Page(pageComFlowerOrderListDTO.getPageNum(),pageComFlowerOrderListDTO.getPageSize()); Page page = new Page(pageComFlowerOrderListDTO.getPageNum(), pageComFlowerOrderListDTO.getPageSize()); IPage<ComShopFlowerOrderStoreListVO> ipage = this.baseMapper.pageOrderByStoreId(page, pageComFlowerOrderListDTO); return R.ok(ipage); } @Override public R selectCountByDeliveryType(Integer deliveryType) { List<ComShopOrderCountVO> comShopOrderCountVOS = this.baseMapper.selectCountByDeliveryType(deliveryType); Map<Integer, Integer> collect = comShopOrderCountVOS.stream().collect(Collectors.toMap(ComShopOrderCountVO::getStatus, ComShopOrderCountVO::getAmount)); ComShopOrderCountVO comShopOrderCountVO = new ComShopOrderCountVO(); comShopOrderCountVO.setStatus(8); comShopOrderCountVO.setAmount(0); for (int i = 1; i < 8; i++) { if (collect.containsKey(i)) { Integer amount = collect.get(i); comShopOrderCountVO.setAmount(amount + comShopOrderCountVO.getAmount()); }else { collect.put(i,0); } } collect.put(comShopOrderCountVO.getStatus(),comShopOrderCountVO.getAmount()); return R.ok(collect); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java
@@ -1,5 +1,6 @@ package com.panzhihua.service_community.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,8 +12,10 @@ import com.panzhihua.common.utlis.WxPayUtils; import com.panzhihua.common.utlis.wx.WXPayUtil; import com.panzhihua.service_community.dao.ComShopFlowerOrderDAO; import com.panzhihua.service_community.dao.ComShopFlowerOrderPayDAO; import com.panzhihua.service_community.dao.ComShopFlowerRefundOrderDAO; import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO; import com.panzhihua.service_community.model.dos.ComShopFlowerOrderPayDO; import com.panzhihua.service_community.model.dos.ComShopFlowerRefundOrderDO; import com.panzhihua.service_community.service.ComShopFlowerRefundOrderService; import lombok.extern.slf4j.Slf4j; @@ -22,6 +25,7 @@ import javax.annotation.Resource; import java.util.Date; import java.util.Map; import java.util.Objects; /** @@ -35,19 +39,21 @@ public class ComShopFlowerRefundOrderServiceImpl extends ServiceImpl<ComShopFlowerRefundOrderDAO, ComShopFlowerRefundOrderDO> implements ComShopFlowerRefundOrderService { @Value("${hc_min.app.isTest}") @Value("${hcMin.app.isTest}") private Boolean isTest; @Value("${hc_min.app.appid}") @Value("${hcMin.app.appid}") private String appid; @Value("${hc_min.app.payKey}") @Value("${hcMin.app.payKey}") private String payKey; @Value("${hc_min.app.mchId}") @Value("${hcMin.app.mchId}") private String mchId; @Value("${hc_min.app.notifyUrl}") @Value("${hcMin.app.notifyUrl}") private String notifyUrl; @Resource private ComShopFlowerOrderDAO comShopFlowerOrderDAO; @Resource private ComShopFlowerOrderPayDAO comShopFlowerOrderPayDAO; @Override @@ -73,6 +79,7 @@ @Override public R updateRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) { ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = this.baseMapper.selectById(comShopFlowerRefundOrderDTO.getId()); if (Objects.isNull(comShopFlowerRefundOrderDO)) { return R.fail("不存在该退款订单"); } @@ -80,19 +87,49 @@ //处理退款事宜 comShopFlowerRefundOrderDO.setRefundTime(new Date()); comShopFlowerRefundOrderDO.setHandleTime(new Date()); comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.agree); //微信处理退款 try { String refundNo = WXPayUtil.generateNonceStr(); ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId()); String refundStr = WxPayUtils.refund(appid, mchId, comShopFlowerOrderDO.getWxTardeNo(), comShopFlowerRefundOrderDO.getPayAmount(), comShopFlowerRefundOrderDO.getRefundAmount(), refundNo, isTest); log.info(refundStr); comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tkcg); comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.agree); log.info("退款请求接口返回参数:{}" , refundStr); Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr); if (CollUtil.isNotEmpty(mapResult)) { String return_code = (String) mapResult.get("return_code"); String result_code = (String) mapResult.get("result_code"); String return_msg = mapResult.get("return_msg"); ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO(); orderPayDO.setOrderNo(comShopFlowerOrderDO.getOrderNo()); orderPayDO.setOrderAmount(comShopFlowerOrderDO.getTotalAmount()); orderPayDO.setPayTime(new Date()); orderPayDO.setStoreId(comShopFlowerOrderDO.getStoreId()); orderPayDO.setDeliveryType(comShopFlowerOrderDO.getDeliveryType()); orderPayDO.setOrderId(comShopFlowerOrderDO.getId()); orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.tk); orderPayDO.setRefundOrderNo(comShopFlowerRefundOrderDO.getRefundOrderNo()); orderPayDO.setPayAmount(comShopFlowerRefundOrderDO.getRefundAmount()); if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) { //退款成功 comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tkcg); // 添加订单支付记录表 // orderPayDO.setWxTradeNo(wxPayNotifyOrderDTO.getWxTradeNo()); orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg); }else { //退款失败 comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb); comShopFlowerRefundOrderDO.setRemark(comShopFlowerRefundOrderDO.getRemark() + "_"+return_msg); // 添加订单支付记录表 orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb); } comShopFlowerOrderPayDAO.insert(orderPayDO); } } catch (Exception e) { log.error(e.getMessage()); log.error("申请退款失败,"+e.getMessage()); e.printStackTrace(); } @@ -101,9 +138,7 @@ comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb); comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.refuse); } this.baseMapper.updateById(comShopFlowerRefundOrderDO); return R.ok(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComShopFlowerOrderDAO.xml
@@ -66,12 +66,13 @@ sr.pay_time, sr.delivery_type, sr.delivery_status, sr.logistics_company, sr.logistics_no, sr.create_at, uad.name as receiver_name, uad.phone as receiver_phone, group_concat(og.goods_name) as goodsName, ss.name as store_name as goodsName, ss.name as store_name ,ccep.adress FROM com_shop_flower_order sr LEFT JOIN com_shop_flower_order_goods og ON sr.id = og.order_id LEFT JOIN com_shop_flower_goods_attr ga ON og.goods_attr_id = ga.id LEFT JOIN sys_user su ON sr.user_id = su.user_id LEFT JOIN com_shop_flower_user_address uad ON sr.receiver_id = uad.id LEFT JOIN com_convenient_merchants ss ON sr.store_id = ss.id LEFT JOIN com_convenient_elevating_point ccep on ccep.id = sr.point_id WHERE sr.delete_status = 1 <if test='pageComShopOrderSearchDTO.userId != null'> AND sr.user_id = #{pageComShopOrderSearchDTO.userId} @@ -108,6 +109,9 @@ </if> <if test='pageComShopOrderSearchDTO.storeUserId != null '> AND ss.sys_user_id = #{pageComShopOrderSearchDTO.storeUserId} </if> <if test='pageComShopOrderSearchDTO.deliveryType != null '> AND sr.delivery_type = #{pageComShopOrderSearchDTO.deliveryType} </if> GROUP BY sr.id ORDER BY sr.create_at DESC </select> @@ -150,5 +154,9 @@ </if> </select> <select id="selectCountByDeliveryType" resultType="com.panzhihua.common.model.vos.shop.ComShopOrderCountVO"> SELECT count(1) amount , `status` FROM com_shop_flower_order WHERE delivery_type = #{deliveryType} GROUP BY `status` </select> </mapper>