Explorar el Código

feat:"增加MQTT订单上传功能"

soobin hace 1 mes
padre
commit
78fd254f78

+ 135 - 0
src/main/java/com/szwl/controller/TCoinOrderController.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gexin.fastjson.JSON;
+import com.szwl.constant.ResponseCodesEnum;
 import com.szwl.feign.SzwlFeign;
 import com.szwl.feign.bean.TAdminParam;
 import com.szwl.model.bean.CoinOrderVO;
@@ -538,6 +539,140 @@ public class TCoinOrderController {
         return R.ok(snList);
     }
 
+    @ApiOperation(value = "MQTT上传线下订单")
+    @PostMapping("/uploadCoinOrder")
+    @ResponseBody
+    public ResponseModel<String> uploadCoinOrder(@RequestBody CoinOrderVO coinOrderVO) {
+        String clientId = coinOrderVO.getClientId();
+        String name = coinOrderVO.getName();
+        Integer payType = coinOrderVO.getPayType();
+        BigDecimal price = coinOrderVO.getPrice();
+        String sn = coinOrderVO.getSn();
+        // no: 商品名称-编号-数量,玫瑰精灵-A01-1,雪糕-I01-1
+        String no = coinOrderVO.getNo();
+        LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(TCoinOrder::getSn, sn);
+        List<TCoinOrder> coinOrders = coinOrderService.list(queryWrapper);
+        if (!coinOrders.isEmpty()) {
+            try {
+                esTCoinOrderService.insertData(coinOrders.get(0));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return R.ok("success");
+        }
+        if (StringUtils.isEmpty(clientId)) {
+            return R.fail("设备编号不能为空");
+        }
+        TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
+        String machineType = equipment.getMachineType(); // 设备类型
+
+        Long adminId = equipment.getAdminId();
+        if (adminId == null) {
+            return R.fail("找不到设备商家");
+        }
+
+        String adminIdStr = String.valueOf(adminId);
+        // 根据 adminId 获取admin信息中的公司类型
+        TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminIdStr));
+        String companyType = admin.getCompanyType();
+
+        TCoinOrder coinOrder = new TCoinOrder();
+        coinOrder.setId(IDGenerator.coinOrderID());
+        coinOrder.setType(null);
+        coinOrder.setClientId(clientId);
+        coinOrder.setAdminId(adminId);
+        coinOrder.setProductName(name);
+        coinOrder.setPayType(payType);
+        coinOrder.setPrice(price);
+        coinOrder.setSn(sn);
+        // 线下纸币器订单都是已付款
+        coinOrder.setStatus(1);
+        coinOrder.setEquipmentId(equipment.getId());
+
+        // 保存订单明细
+        TOrderDetails tOrderDetails = new TOrderDetails();
+        tOrderDetails.setOrderSn(sn);
+        tOrderDetails.setEquipmentId(equipment.getId());
+        tOrderDetails.setRefundStatus("1");
+        tOrderDetails.setAdminId(adminId);
+
+        // 设备类型
+        if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
+            coinOrder.setMachineType("0");
+            tOrderDetails.setMachineType("0");
+        } else {
+            coinOrder.setMachineType(machineType);
+            tOrderDetails.setMachineType(machineType);
+        }
+        // 公司平台
+        if (StringUtils.isNotEmpty(companyType) && companyType.equals("1")) {
+            coinOrder.setCompanyType(companyType);
+            tOrderDetails.setCompanyType(companyType);
+        } else {
+            coinOrder.setCompanyType("0");
+            tOrderDetails.setCompanyType("0");
+        }
+        // 商品数量
+        if (coinOrderVO.getProductNumber() == null || coinOrderVO.getProductNumber() == 0) {
+            coinOrderVO.setProductNumber(1);
+        } else {
+            coinOrder.setProductNumber(coinOrderVO.getProductNumber());
+        }
+        if (StringUtils.isNotEmpty(coinOrderVO.getCreateDate())) {
+            java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date date1 = null;
+            try {
+                date1 = formatter.parse(coinOrderVO.getCreateDate());
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+            coinOrder.setCreateDate(date1);
+            coinOrder.setModifyDate(date1);
+            coinOrder.setPayDate(date1);
+            tOrderDetails.setCreateDate(date1);
+        } else {
+            coinOrder.setCreateDate(new Date());
+            coinOrder.setModifyDate(new Date());
+            coinOrder.setPayDate(new Date());
+            tOrderDetails.setCreateDate(new Date());
+        }
+        coinOrderService.save(coinOrder);
+        try {
+            String[] split = no.split(",");
+            for (String s : split) {
+                String[] strings = s.split("-");
+                // 商品名称
+                String goodName = strings[0];
+                // 商品编号
+                String goodNo = strings[1];
+                // 商品数量
+                Integer productNumber = Integer.valueOf(strings[2]);
+                tOrderDetails.setId(HuifuUtils.initDetailsId());
+                tOrderDetails.setProductNumber(productNumber);
+                tOrderDetails.setProductName(goodName);
+                tOrderDetails.setProductNo(goodNo);
+                orderDetailsService.save(tOrderDetails);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        try {
+            // 推送微信订单
+            // 判断是否开启订单推送功能
+            if (admin != null && StringUtils.isNotEmpty(admin.getOrderNotice()) && admin.getOrderNotice().equals("1")) {
+                String openId = R.getDataIfSuccess(szwlFeign.getOpenId(adminId));
+                // 获取openId
+                if (StringUtils.isNotEmpty(openId)) {
+                    coinOrderService.newSendWechatMessage(openId, equipment, coinOrder, admin.getCompanyType());
+                }
+            }
+            esTCoinOrderService.insertData(coinOrder);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return R.ok("success");
+    }
 
 }
 

+ 15 - 1
src/main/java/com/szwl/service/impl/TOrderServiceImpl.java

@@ -282,13 +282,27 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
             }
             String contactPhone = equipment.getContactPhone();
             String phone = null;
+            TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
             //判断是否有机器运营者,作为短信接收通知人
             if (!StringUtils.isEmpty(contactPhone)) {
+                if (contactPhone.matches("^1[3-9]\\d{9}$")) {
+                    // 是否符合手机号码格式
+                    phone = contactPhone;
+                } else {
+                    //直接发送到账户拥有者手机
+                    if (admin != null) {
+                        if (!StringUtils.isEmpty(admin.getPhone())) {
+                            phone = admin.getPhone();
+                        }
+                    } else {
+                        result = "账户不存在";
+                        return result;
+                    }
+                }
                 //直接发送到机器运营者
                 phone = contactPhone;
             } else {
                 //直接发送到账户拥有者手机
-                TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
                 if (admin != null) {
                     if (!StringUtils.isEmpty(admin.getPhone())) {
                         phone = admin.getPhone();