Răsfoiți Sursa

新增订单推送
新增获取三方商品列表

mac 7 luni în urmă
părinte
comite
85346e3723

+ 25 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/constant/enums/NotifyStatusEnum.java

@@ -0,0 +1,25 @@
+package com.kxs.lhb.basic.api.constant.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 订单枚举
+ *
+ * @author 没秃顶的码农
+ * @date 2024-09-04
+ */
+@Getter
+@RequiredArgsConstructor
+public enum NotifyStatusEnum {
+
+    CANCEL(-1, "订单取消"),
+    NORMAL(0, "订单生成"),
+    DISTRIBUTION(1, "订单配送中"),
+    FINISH(2, "订单完成"),
+    ACT(3, "订单激活");
+
+    private final int code;
+
+    private final String description;
+}

+ 12 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/admin/SysGoodsController.java

@@ -48,6 +48,18 @@ public class SysGoodsController {
         return R.ok(lhbGoodsService.page(page, Wrappers.lambdaQuery(param).orderByDesc(LhbGoods::getId)));
     }
 
+    /**
+     * 获取第三方通道所有商品列表
+     *
+     * @param ifCode if 代码
+     * @return {@link R }
+     */
+    @GetMapping("/getOutGoods")
+    public R getOutGoods(@RequestParam("ifCode") String ifCode) {
+
+        return R.ok(lhbGoodsService.getOutGoods(ifCode));
+    }
+
 
     /**
      * 新增

+ 3 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mapper/LhbAreaMapper.java

@@ -4,6 +4,8 @@ import org.apache.ibatis.annotations.Mapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.kxs.lhb.basic.api.model.LhbArea;
 
+import java.util.List;
+
 
 /**
  * 地区表(LhbArea)表数据库访问层
@@ -14,5 +16,6 @@ import com.kxs.lhb.basic.api.model.LhbArea;
 @Mapper
 public interface LhbAreaMapper extends MPJBaseMapper<LhbArea> {
 
+    List<LhbArea> getListAreas(List<String> codes);
 }
 

+ 13 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/model/params/BindNotify.java

@@ -24,6 +24,8 @@ public class BindNotify {
 
     private String productName;
 
+    private BigDecimal firstRechargeAmount;
+
     private String receiveName;
 
     private String receiveMobile;
@@ -32,5 +34,16 @@ public class BindNotify {
 
     private String orderNo;
 
+    private String province;
+
+    private String city;
+
     private String createTime;
+
+    /**
+     * 0-订单生成 1-订单配送中 2-订单完成 3-订单激活 -1-订单已取消
+     */
+    private Integer status;
+
+    private String remark;
 }

+ 4 - 13
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/model/params/OrderNotify.java

@@ -23,20 +23,11 @@ public class OrderNotify extends IsvParams{
 
     private String mobile;
 
-    private String productName;
+    /**
+     * 充值金额 单位(分)
+     */
+    private BigDecimal rechargeAmount;
 
-    private BigDecimal firstRechargeAmount;
 
-    private String receiveName;
-
-    private String receiveMobile;
-
-    private String receiveAddress;
-
-    private String orderNo;
-
-    private String userName;
-
-    private String createTime;
 
 }

+ 1 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbAreaService.java

@@ -19,5 +19,6 @@ public interface LhbAreaService extends MPJBaseService<LhbArea> {
 
     void refresh();
 
+    List<LhbArea> getListAreas(List<String> codes);
 }
 

+ 2 - 1
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbGoodsService.java

@@ -5,6 +5,7 @@ import com.kxs.lhb.basic.api.dto.cusmoter.goods.NumbersDTO;
 import com.kxs.lhb.basic.api.model.LhbGoods;
 import com.kxs.lhb.basic.api.vo.cusmoter.goods.GoodsInfoVO;
 import com.kxs.lhb.basic.api.vo.cusmoter.goods.NumbersVO;
+import com.kxs.lhb.basic.api.vo.tongyi.PackagesRes;
 
 import java.util.List;
 
@@ -29,6 +30,6 @@ public interface LhbGoodsService extends MPJBaseService<LhbGoods> {
 
     void goodsInfoTask();
 
-
+    List<PackagesRes> getOutGoods(String ifCode);
 }
 

+ 6 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbAreaServiceImpl.java

@@ -42,5 +42,11 @@ public class LhbAreaServiceImpl extends MPJBaseServiceImpl<LhbAreaMapper, LhbAre
         }
 
     }
+
+    @Override
+    public List<LhbArea> getListAreas(List<String> codes) {
+
+        return baseMapper.getListAreas(codes);
+    }
 }
 

+ 6 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbGoodsServiceImpl.java

@@ -166,6 +166,12 @@ public class LhbGoodsServiceImpl extends MPJBaseServiceImpl<LhbGoodsMapper, LhbG
         });
     }
 
+    @Override
+    public List<PackagesRes> getOutGoods(String ifCode) {
+
+        return channelFactory.getChannel(ifCode).getPackages(PackagesReq.builder().build());
+    }
+
 
     private void refreshGoods(LhbGoods goods, PackagesRes packages) {
 

+ 45 - 39
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderServiceImpl.java

@@ -23,6 +23,7 @@ import com.kxs.common.pay.model.QueryRequest;
 import com.kxs.common.pay.model.QueryResponse;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.lhb.basic.api.amqp.RabbitOrderTimeoutQueueMQ;
+import com.kxs.lhb.basic.api.constant.enums.NotifyStatusEnum;
 import com.kxs.lhb.basic.api.constant.enums.OrderStatusEnum;
 import com.kxs.lhb.basic.api.dto.tongyi.OrderCancelReq;
 import com.kxs.lhb.basic.api.dto.tongyi.OrderSubmitReq;
@@ -81,6 +82,8 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
 
     private final LhbIsvInfoService isvInfoService;
 
+    private final LhbAreaService areaService;
+
     @Override
     public List<QueryLogisticsVO> queryLogistics(Integer id) {
 
@@ -184,7 +187,6 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
 
         LhbGoods goods = goodsService.getById(param.getGoodsId());
         if(goods.getServerFee().compareTo(param.getServerFee()) != 0){
-
             throw new GlobalCustomerException("服务费与传入的服务费不匹配");
         }
         order.setIfCode(goods.getIfCode());
@@ -197,11 +199,16 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
         order.setGoodsId(param.getGoodsId());
         order.setSkuId(param.getSkuId());
 
+        List<LhbArea> areas = areaService.getListAreas(List.of(param.getArea().split(StrUtil.COMMA)));
+        if(areas.size() != 3){
+            throw new GlobalCustomerException("地区传入错误");
+        }
+
 
         LhbGoodsSku goodsSku = goodsSkuService.getById(param.getSkuId());
         List<LhbGoodsActivities> activities = goodsActivitiesService.list(Wrappers.lambdaQuery(LhbGoodsActivities.class).eq(LhbGoodsActivities::getSkuId, goodsSku.getId()));
 
-        //如果有服务费 需要先支付 在回调再下单
+        //如果有服务费 需要先支付 回调再下单
         if(order.getServerFee().compareTo(BigDecimal.ZERO) == 0){
 
             order.setStatus(OrderStatusEnum.PAY.getCode());
@@ -224,21 +231,11 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
                     .regionId(order.getRegionId()).build();
             String orderId = channelFactory.getChannel(order.getIfCode()).orderSubmit(req);
             order.setOutOrderSn(orderId);
+            //下单成功推送预约信息到下游
+            sendToOrder(order, NotifyStatusEnum.NORMAL);
         }
         order.updateById();
 
-        //下单成功推送预约信息到下游
-        BindNotify bindNotify = BindNotify.builder().mobile(order.getMakeMobile())
-                .isvNo(order.getIsvNo())
-                .employNum(order.getEmployNum())
-                .productName(order.getPackageName())
-                .orderNo(order.getOrderSn())
-                .receiveName(order.getCustName())
-                .receiveMobile(order.getContMobile())
-                .receiveAddress(order.getAddress())
-                .createTime(LocalDateTimeUtil.format(LocalDate.now(), DatePattern.NORM_DATETIME_PATTERN))
-                .build();
-        notifyService.bindPush(bindNotify, order.getIsvNo());
         return order.getId();
     }
 
@@ -276,17 +273,7 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
         order.updateById();
 
         //下单成功推送预约信息到下游
-        BindNotify bindNotify = BindNotify.builder().mobile(order.getMakeMobile())
-                .isvNo(order.getIsvNo())
-                .employNum(order.getEmployNum())
-                .productName(order.getPackageName())
-                .orderNo(order.getOrderSn())
-                .receiveName(order.getCustName())
-                .receiveMobile(order.getContMobile())
-                .receiveAddress(order.getAddress())
-                .createTime(LocalDateTimeUtil.format(LocalDate.now(), DatePattern.NORM_DATETIME_PATTERN))
-                .build();
-        notifyService.bindPush(bindNotify, order.getIsvNo());
+        sendToOrder(order, NotifyStatusEnum.NORMAL);
     }
 
 
@@ -356,6 +343,7 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
                 .applyPerson(SecurityUtils.getUser().getName()).build();
         channelFactory.getChannel(order.getIfCode()).orderCancel(req);
 
+        sendToOrder(order, NotifyStatusEnum.CANCEL);
         return Boolean.TRUE;
     }
 
@@ -370,6 +358,10 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
             QueryOrderReq req = QueryOrderReq.builder().orderId(order.getOutOrderSn()).build();
             String outStatus = channelFactory.getChannel(order.getIfCode()).queryStatus(req);
             //更新状态
+            if("41".equals(outStatus) || "2".equals(outStatus)){
+                //41-配送中,不可取消订单 2-订单成功结束
+                sendToOrder(order, "41".equals(outStatus) ? NotifyStatusEnum.DISTRIBUTION : NotifyStatusEnum.FINISH);
+            }
             update(Wrappers.lambdaUpdate(LhbOrder.class).eq(LhbOrder::getId, order.getId()).set(LhbOrder::getOutStatus, outStatus));
         });
     }
@@ -394,25 +386,39 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
                         .set(LhbOrder::getFirstCharge, firstChargeAmt)
                         .set(LhbOrder::getIsFirstRecharge, CommonConstants.SUCCESS));
 
-                //构建推送消息
-                OrderNotify orderNotify = OrderNotify.builder().mobile(order.getMakeMobile())
-                        .isvNo(order.getIsvNo())
-                        .employNum(order.getEmployNum())
-                        .productName(order.getPackageName())
-                        .firstRechargeAmount(firstChargeAmt)
-                        .userName(order.getCustName())
-                        .orderNo(order.getOrderSn())
-                        .receiveName(order.getCustName())
-                        .receiveMobile(order.getContMobile())
-                        .receiveAddress(order.getAddress())
-                        .createTime(LocalDateTimeUtil.format(LocalDate.now(), DatePattern.NORM_DATETIME_PATTERN))
-                        .build();
-                notifyService.orderPush(orderNotify, order.getIsvNo());
+                sendToOrder(order, NotifyStatusEnum.ACT);
             }
 
         });
     }
 
+    /**
+     * 构建推送消息
+     *
+     * @param order            次序
+     * @param notifyStatusEnum notify status 枚举
+     */
+    private void sendToOrder(LhbOrder order, NotifyStatusEnum notifyStatusEnum) {
+
+        List<LhbArea> areas = areaService.getListAreas(List.of(order.getArea().split(StrUtil.COMMA)));
+        BindNotify bindNotify = BindNotify.builder().mobile(order.getMakeMobile())
+                .isvNo(order.getIsvNo())
+                .employNum(order.getEmployNum())
+                .productName(order.getPackageName())
+                .firstRechargeAmount(order.getFirstCharge())
+                .orderNo(order.getOrderSn())
+                .receiveName(order.getCustName())
+                .receiveMobile(order.getContMobile())
+                .receiveAddress(order.getAddress())
+                .status(notifyStatusEnum.getCode())
+                .province(areas.get(0).getAreaName())
+                .city(areas.get(1).getAreaName())
+                .remark(order.getRemark())
+                .createTime(LocalDateTimeUtil.format(LocalDate.now(), DatePattern.NORM_DATETIME_PATTERN))
+                .build();
+        notifyService.bindPush(bindNotify, order.getIsvNo());
+    }
+
 
 }
 

+ 18 - 8
lhb-basic/lhb-basic-biz/src/main/resources/mapper/LhbAreaMapper.xml

@@ -3,16 +3,26 @@
 <mapper namespace="com.kxs.lhb.basic.biz.mapper.LhbAreaMapper">
 
     <resultMap type="com.kxs.lhb.basic.api.model.LhbArea" id="LhbAreaMap">
-        <result column="id" property="id" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="del_flag" property="delFlag" />
-        <result column="version" property="version" />
-        <result column="parent_id" property="parentId" />
-        <result column="area_name" property="areaName" />
-        <result column="area_code" property="areaCode" />
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="del_flag" property="delFlag"/>
+        <result column="version" property="version"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="area_name" property="areaName"/>
+        <result column="area_code" property="areaCode"/>
 
     </resultMap>
+    <select id="getListAreas" resultMap="LhbAreaMap">
+        SELECT * FROM lhb_area
+        <where>
+            and area_code in
+            <foreach collection="codes" item="code" open="(" separator="," close=")">
+                #{code}
+            </foreach>
+        </where>
+        ORDER BY FIELD(b.user_id, <foreach collection="codes" item="code" separator=",">#{code}</foreach>)
+    </select>
 
 
 </mapper>