소스 검색

feat:"MQTT修改商品信息,批量修改商品价格"

soobin 1 개월 전
부모
커밋
e8a356b8a7

+ 2 - 0
src/main/java/com/szwl/constant/OperationType.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.IEnum;
 public enum OperationType implements IEnum<String> {
 
     HEART("heart","心跳"),
+    UPDATE_PRODUCT("updateProduct","修改商品"),
+    BATCH_UPDATE_PRICE("batchUpdatePrice","批量修改价格"),
     UPDATE_TAX_STATUS("updateTaxStatus","修改税费开关"),
     UPDATE_TAX_RATE("updateTaxRate","修改税率"),
     RETURN_COIN("returnCoin","退币申请"),

+ 31 - 0
src/main/java/com/szwl/controller/TEquipmentController.java

@@ -1907,6 +1907,37 @@ public class TEquipmentController {
         return R.ok();
     }
 
+    @ApiOperation("修改商品信息")
+    @PostMapping("/updateProductInfo")
+    public ResponseModel<?> updateProductInfo(@RequestBody TProduct product) {
+        // 包括修改价格、屏蔽显示、名称
+        UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
+                .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
+        Long adminId = userDetailBO.getId();
+        TEquipment equipment = tEquipmentService.getById(product.getEquipmentId());
+        if (equipment != null) {
+            String message = PushUtils.buildJson(OperationType.UPDATE_PRODUCT.getCode(), JSON.toJSONString(product)).toString();
+            tEquipmentService.sendRemoteMessage(equipment.getClientId(), OperationType.UPDATE_PRODUCT, message, adminId);
+
+        }
+        return R.ok();
+    }
+
+    @ApiOperation("批量修改价格")
+    @PostMapping("/batchUpdatePrice")
+    public ResponseModel<?> batchUpdatePrice(@RequestBody TProduct product) {
+        UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
+                .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
+        Long adminId = userDetailBO.getId();
+        TEquipment equipment = tEquipmentService.getById(product.getEquipmentId());
+        if (equipment != null) {
+            String message = PushUtils.buildJson(OperationType.BATCH_UPDATE_PRICE.getCode(), product.getRmbPrice().toString()).toString();
+            tEquipmentService.sendRemoteMessage(equipment.getClientId(), OperationType.BATCH_UPDATE_PRICE, message, adminId);
+        }
+        return R.ok();
+    }
+
+
     /**
      * 上传日志
      *

+ 57 - 0
src/main/java/com/szwl/handle/response/BatchUpdatePriceProcessor.java

@@ -0,0 +1,57 @@
+package com.szwl.handle.response;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.model.entity.TProduct;
+import com.szwl.service.TEquipmentService;
+import com.szwl.service.TProductService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Component
+public class BatchUpdatePriceProcessor implements ResponseProcessor {
+
+    @Resource
+    private TEquipmentService equipmentService;
+
+    @Resource
+    private TProductService productService;
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            Integer direction = messageLog.getDirection();
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+            BigDecimal price = new BigDecimal(responseContent).setScale(2, BigDecimal.ROUND_HALF_UP);
+            // 查询设备
+            LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
+            query.eq(TEquipment::getClientId, clientId);
+            TEquipment equipment = equipmentService.getOne(query);
+            if (equipment != null) {
+                LambdaQueryWrapper<TProduct> productWrapper = Wrappers.lambdaQuery();
+                productWrapper.eq(TProduct::getEquipmentId, equipment.getId());
+                List<TProduct> list = productService.list(productWrapper);
+                if (!list.isEmpty()) {
+                    for (TProduct product : list) {
+                        product.setCodePrice(price);
+                        product.setRmbPrice(price);
+                        productService.updateById(product);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.BATCH_UPDATE_PRICE.getCode();
+    }
+}

+ 71 - 0
src/main/java/com/szwl/handle/response/UpdateProductProcessor.java

@@ -0,0 +1,71 @@
+package com.szwl.handle.response;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.model.entity.TProduct;
+import com.szwl.model.jsonParm.HeartParam;
+import com.szwl.service.TEquipmentService;
+import com.szwl.service.TProductService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+@Slf4j
+@Component
+public class UpdateProductProcessor implements ResponseProcessor {
+
+    @Resource
+    private TEquipmentService equipmentService;
+
+    @Resource
+    private TProductService productService;
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            Integer direction = messageLog.getDirection();
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+
+            // 查询设备
+            LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
+            query.eq(TEquipment::getClientId, clientId);
+            TEquipment equipment = equipmentService.getOne(query);
+            if (equipment != null) {
+                try {
+                    // 转换为对象
+                    TProduct product = JSON.parseObject(responseContent, TProduct.class);
+                    LambdaQueryWrapper<TProduct> productWrapper = Wrappers.lambdaQuery();
+                    productWrapper.eq(TProduct::getNo, product.getNo());
+                    productWrapper.eq(TProduct::getEquipmentId, equipment.getId());
+                    TProduct tProduct = productService.getOne(productWrapper);
+                    if (tProduct != null) {
+                        tProduct.setCodePrice(product.getCodePrice());
+                        tProduct.setName(product.getName());
+                        tProduct.setProductName(product.getProductName());
+                        tProduct.setRmbPrice(product.getRmbPrice());
+                        tProduct.setSellStatus(product.getSellStatus());
+                        productService.updateById(tProduct);
+                    }
+                } catch (Exception e) {
+                    log.info("--解析失败:{}", e.getMessage());
+                }
+
+            }
+        }
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.UPDATE_PRODUCT.getCode();
+    }
+}