LuoDLeo 6 місяців тому
батько
коміт
9436128c4d

+ 2 - 2
src/main/java/org/springblade/common/aspect/VendingFlagAspect.java

@@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
+import java.util.ArrayList;
 import java.util.Map;
 import java.util.Objects;
 
@@ -53,7 +53,7 @@ public class VendingFlagAspect {
                 vendingOrderRes.setMachine_id(machine_id);
                 vendingOrderRes.setSaleSn("");
                 vendingOrderRes.setChannelNum("0");
-                vendingOrderRes.setSaledata(new HashMap<>());
+                vendingOrderRes.setSaledata(new ArrayList<>());
                 this.notifyReturn(response, vendingOrderRes);
                 log.info("设备:" + machine_id + "请求接口:" + requestURI + "被限流!");
                 return response;

+ 21 - 15
src/main/java/org/springblade/modules/api/controller/ApiVendingController.java

@@ -16,6 +16,7 @@ import org.springblade.core.log.annotation.ApiLog;
 import org.springblade.modules.api.request.VendingHeartReq;
 import org.springblade.modules.api.request.VendingOrderReq;
 import org.springblade.modules.api.request.VendingShipReq;
+import org.springblade.modules.api.response.VendingOrderGoodsRes;
 import org.springblade.modules.api.response.VendingOrderRes;
 import org.springblade.modules.api.service.VendingOrderService;
 import org.springblade.modules.business.entity.Facility;
@@ -72,26 +73,37 @@ public class ApiVendingController {
         if (CollectionUtil.isEmpty(vendingOrderVOs)) {
             vendingOrderRes.setSaleSn("");
             vendingOrderRes.setChannelNum("0");
-            vendingOrderRes.setSaledata(new HashMap<>());
+            vendingOrderRes.setSaledata(new ArrayList<>());
             this.notifyReturn(response, vendingOrderRes);
         } else {
             //一次只返回一个订单
             //按订单分组
             Map<Long, List<OrderGoodsVO>> vendingOrderGoodMap = vendingOrderVOs.stream().collect(Collectors.groupingBy(OrderGoodsVO::getOrderId));
             OrderVO backOrder = vendingOrderService.getBackOrder(vendingOrderReq);
+            if (Objects.isNull(backOrder)){
+                vendingOrderRes.setSaleSn("");
+                vendingOrderRes.setChannelNum("0");
+                vendingOrderRes.setSaledata(new ArrayList<>());
+                this.notifyReturn(response, vendingOrderRes);
+                return;
+            }
             List<OrderGoodsVO> orderGoodsVOS = vendingOrderGoodMap.get(backOrder.getId());
             vendingOrderRes.setSaleSn(backOrder.getId() + "");
             vendingOrderRes.setChannelNum(orderGoodsVOS.size() + "");
 
-            Map<String, String> saledataMap = new HashMap<>();
+            List<VendingOrderGoodsRes> saledataList = new ArrayList<>();
+
+            //补充货道信息
+            for (OrderGoodsVO orderGoodsVO : orderGoodsVOS) {
+                VendingOrderGoodsRes vendingOrderGoodsRes = new VendingOrderGoodsRes();
+                vendingOrderGoodsRes.setOrderGoodsId(String.valueOf(orderGoodsVO.getId()));
+                vendingOrderGoodsRes.setChannel(orderGoodsVO.getCargoWayNo());
+                vendingOrderGoodsRes.setChannelNum(String.valueOf(orderGoodsVO.getGoodsNum()));
 
-            //按货道分组
-            Map<String, List<OrderGoodsVO>> orderGoodsMap = orderGoodsVOS.stream().collect(Collectors.groupingBy(OrderGoodsVO::getCargoWayNo));
-            for (Map.Entry<String, List<OrderGoodsVO>> rderGoodsEntry : orderGoodsMap.entrySet()) {
-                saledataMap.put(rderGoodsEntry.getKey(), rderGoodsEntry.getValue().size() + "");
+                saledataList.add(vendingOrderGoodsRes);
             }
 
-            vendingOrderRes.setSaledata(saledataMap);
+            vendingOrderRes.setSaledata(saledataList);
             this.notifyReturn(response, vendingOrderRes);
         }
 
@@ -115,11 +127,7 @@ public class ApiVendingController {
     @PostMapping("callback")
     public void callback(@Valid @RequestBody VendingShipReq req) {
         //设备出货成功回调
-        OrderGoods orderGoods = orderGoodsService.lambdaQuery()
-                .eq(OrderGoods::getDeviceId, req.getMachine_id())
-                .eq(OrderGoods::getOrderId, req.getSaleSn())
-                .eq(OrderGoods::getCargoWayNo, req.getChannelNum())
-                .one();
+        OrderGoods orderGoods = orderGoodsService.getById(req.getOrderGoodsId());
 
         if (Objects.isNull(orderGoods)) {
             log.info("设备出货成功回调,未找到货品信息");
@@ -135,9 +143,7 @@ public class ApiVendingController {
             orderGoodsService.lambdaUpdate()
                     .set(OrderGoods::getShipmentNum, orderGoods.getShipmentNum() + 1)
                     .set(OrderGoods::getShippingTime, LocalDateTime.now())
-                    .eq(OrderGoods::getDeviceId, req.getMachine_id())
-                    .eq(OrderGoods::getOrderId, req.getSaleSn())
-                    .eq(OrderGoods::getCargoWayNo, req.getChannelNum());
+                    .eq(OrderGoods::getId, req.getOrderGoodsId());
 
             if (orderGoods.getGoodsNum() == orderGoods.getShipmentNum() + 1) {
                 orderService.lambdaUpdate()

+ 4 - 0
src/main/java/org/springblade/modules/api/request/SubmitOrderRequest.java

@@ -20,6 +20,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -61,6 +63,8 @@ public class SubmitOrderRequest implements Serializable {
 	private Long goodsInfoId;
 
 	@ApiModelProperty(value = "商品数量")
+	@Min(value = 1, message = "商品数量不能小于1")
+	@Max(value = 1, message = "商品数量不能大于1")
 	private Integer goodsNum;
 
 	@ApiModelProperty(value = "商品规格ID")

+ 9 - 3
src/main/java/org/springblade/modules/api/request/VendingShipReq.java

@@ -9,8 +9,8 @@ import lombok.Data;
 @Data
 public class VendingShipReq {
 
-    //成功:{"machine_id":"001","SaleSn":"1234567890","ChannelNum":"1","Status":"OK"}
-    //失败:{"machine_id":"001","SaleSn":"1234567890","ChannelNum":"1","Status":"FAIL"}
+    //成功:{"machine_id":"001","SaleSn":"1234567890","OrderGoodsId":"789456132","ChannelNum":"1","Channel":"2","Status":"OK"}
+    //失败:{"machine_id":"001","SaleSn":"1234567890","OrderGoodsId":"789456132","ChannelNum":"1","Channel":"2","Status":"FAIL"}
 
     @ApiModelProperty(value = "设备id")
     private String machine_id;
@@ -18,7 +18,13 @@ public class VendingShipReq {
     @ApiModelProperty(value = "订单号")
     private String SaleSn;
 
-    @ApiModelProperty(value = "设备通道")
+    @ApiModelProperty(value = "出货的货道编号")
+    private String OrderGoodsId;
+
+    @ApiModelProperty(value = "出货的货道编号")
+    private String Channel;
+
+    @ApiModelProperty(value = "货道出货数量")
     private String ChannelNum;
 
     @ApiModelProperty(value = "出货状态")

+ 21 - 0
src/main/java/org/springblade/modules/api/response/VendingOrderGoodsRes.java

@@ -0,0 +1,21 @@
+package org.springblade.modules.api.response;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ */
+@Data
+public class VendingOrderGoodsRes {
+
+    @ApiModelProperty(value = "出货的货道编号")
+    private String OrderGoodsId;
+
+    @ApiModelProperty(value = "出货的货道编号")
+    private String Channel;
+
+    @ApiModelProperty(value = "货道出货数量")
+    private String ChannelNum;
+
+}

+ 5 - 5
src/main/java/org/springblade/modules/api/response/VendingOrderRes.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Map;
+import java.util.List;
 
 @Data
 @ApiModel(value = "售货机订单返回", description = "售货机订单返回")
@@ -15,7 +15,7 @@ public class VendingOrderRes {
 //    ChannelNum=3;//出货的货道数量
 //    Saledata;//出货信息。Saledata后面跟着货道号和对应的数量,下面例子中1货道1个,3货道2个,6货道1个。
 //
-//    {"machine_id":"001","SaleSn":"1234567890","ChannelNum":"3","Saledata":{"1":"1","3":"2","6":"1"}}
+//    {"machine_id":"001","SaleSn":"1234567890","OrderGoodsId":"789456132","ChannelNum":"3","Saledata":{"1":"1","3":"2","6":"1"}}
 
     @ApiModelProperty(value = "机器码")
     private String machine_id;
@@ -23,10 +23,10 @@ public class VendingOrderRes {
     @ApiModelProperty(value = "订单号")
     private String SaleSn;
 
-    @ApiModelProperty(value = "出货的货道数量")
+    @ApiModelProperty(value = "货道总出货数量")
     private String ChannelNum;
 
-    @ApiModelProperty(value = "出货信息")
-    private Map<String, String> Saledata;
+    @ApiModelProperty(value = "出货商品信息")
+    private List<VendingOrderGoodsRes> Saledata;
 
 }

+ 1 - 1
src/main/java/org/springblade/modules/finance/entity/OrderGoods.java

@@ -20,7 +20,7 @@ import java.time.LocalDateTime;
 @Data
 @TableName("t_order_goods")
 @EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "OrderGoods对象", description = "商品订单表")
+@ApiModel(value = "OrderGoods对象", description = "商品订单表-一个订单,多个同样的商品多条数据")
 public class OrderGoods extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;

+ 1 - 2
src/main/java/org/springblade/modules/finance/service/impl/OrderGoodsServiceImpl.java

@@ -30,7 +30,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -115,7 +114,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
 		orderGoods.setGoodsName(goods.getGoodsName());
 		orderGoods.setCargoWayId(request.getCargoWayId());
 		orderGoods.setCargoWayNo(request.getCargoWayNo());
-		orderGoods.setShippingTime(LocalDateTime.now());
+		//orderGoods.setShippingTime(LocalDateTime.now());
 		orderGoods.setGoodsNo(goods.getGoodsNo());
 		orderGoods.setGoodsImage(goods.getGoodsCover());
 		orderGoods.setGoodsId(request.getGoodsInfoId());

+ 5 - 5
src/main/resources/application-prod.yml

@@ -1,16 +1,16 @@
 #数据源配置
 spring:
   redis:
-    host: r-bp1ufiehdbdcygqvxp.redis.rds.aliyuncs.com
+    host: 127.0.0.1
     port: 6379
-    password: Bl202361
+    password: hkh1ONy0JVJBWnuPc0fd
     database: 2
     ssl: false
 
   datasource:
-    url: jdbc:mysql://rm-bp1la0o3v7sm7fl5o.mysql.rds.aliyuncs.com:3306/groupon?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
-    username: taituan
-    password: Bl202361
+    url: jdbc:mysql://127.0.0.1:3306/vending?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
+    username: vending
+    password: sMZDynKLZJAsSzwz
 
 #第三方登陆
 social: