lyhzzz 5 kuukautta sitten
vanhempi
commit
7c3aaeaa20

+ 28 - 20
doc/update1.10.9.sql

@@ -61,26 +61,25 @@ CREATE TABLE `t_product_cooperation`  (
 -- ----------------------------
 -- Table structure for t_product_order
 -- ----------------------------
-DROP TABLE IF EXISTS `t_product_order`;
-CREATE TABLE `t_product_order`  (
-  `id` int NOT NULL AUTO_INCREMENT,
-  `product_id` int NULL DEFAULT NULL,
-  `order_sn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '订单号',
-  `amount` decimal(10, 2) NULL DEFAULT NULL,
-  `number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付宝的交易号或者微信支付订单号',
-  `pay_type` tinyint NOT NULL DEFAULT -1 COMMENT '付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他',
-  `pay_status` tinyint NULL DEFAULT 0 COMMENT '状态,0或-1表示未付款,-2表示已退款,1表示已付款',
-  `trade_time` datetime NULL DEFAULT NULL COMMENT '交易时间',
-  `user_id` bigint NULL DEFAULT NULL COMMENT '用户表t_user的id',
-  `count` tinyint NULL DEFAULT NULL COMMENT '购买数量',
-  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
-  `rec_status` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '记录的状态,A: 生效,I: 禁用',
-  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
-  `time_zone_off` int NULL DEFAULT 0 COMMENT '时区差,单位分钟',
-  `lang` varchar(255) DEFAULT NULL,
-  `camera_id` int DEFAULT NULL,
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+CREATE TABLE `t_product_order` (
+                                   `id` int NOT NULL AUTO_INCREMENT,
+                                   `product_id` int DEFAULT NULL,
+                                   `order_sn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '订单号',
+                                   `amount` decimal(10,2) DEFAULT NULL,
+                                   `number` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '支付宝的交易号或者微信支付订单号',
+                                   `pay_type` tinyint NOT NULL DEFAULT '-1' COMMENT '付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他',
+                                   `pay_status` tinyint DEFAULT '0' COMMENT '状态,0或-1表示未付款,-2表示已退款,1表示已付款',
+                                   `trade_time` datetime DEFAULT NULL COMMENT '交易时间',
+                                   `user_id` bigint DEFAULT NULL COMMENT '用户表t_user的id',
+                                   `count` tinyint DEFAULT NULL COMMENT '购买数量',
+                                   `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                                   `rec_status` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'A' COMMENT '记录的状态,A: 生效,I: 禁用',
+                                   `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+                                   `time_zone_off` int DEFAULT '0' COMMENT '时区差,单位分钟',
+                                   `lang` varchar(255) DEFAULT NULL,
+                                   `camera_id` int DEFAULT NULL,
+                                   PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
 
 -- ----------------------------
 -- Records of t_product_order
@@ -88,3 +87,12 @@ CREATE TABLE `t_product_order`  (
 
 SET FOREIGN_KEY_CHECKS = 1;
 
+CREATE TABLE `t_scene_cooperation_count` (
+                                             `id` int NOT NULL AUTO_INCREMENT,
+                                             `num` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                             `count` int DEFAULT NULL,
+                                             `rec_status` varchar(255) COLLATE utf8mb4_general_ci DEFAULT 'A',
+                                             `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+                                             `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                             PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

+ 48 - 0
src/main/java/com/fdkankan/ucenter/entity/SceneCooperationCount.java

@@ -0,0 +1,48 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-20
+ */
+@Getter
+@Setter
+@TableName("t_scene_cooperation_count")
+public class SceneCooperationCount implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("num")
+    private String num;
+
+    @TableField("count")
+    private Integer count;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"ucenter", getTables(new String[]{
-                "t_product","t_product_order","t_product_cooperation"
+                "t_scene_cooperation_count"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 3 - 1
src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java

@@ -432,12 +432,14 @@ public class LaserService {
     }
 
     public void saveBatchCooperation(List<String> numList2,List<String> snCodeList, String userName, List<String> userNameList,String type) {
+        if(numList2.isEmpty() && snCodeList.isEmpty()){
+            return;
+        }
         if(userNameList.isEmpty()){
             userNameList.add(userName);
         }
         HashMap<String,Object> map = new HashMap<>();
         map.put("numList",numList2);
-        //map.put("type","camera":"scene");
         map.put("type",type);
         map.put("snCodeList",snCodeList);
         map.put("userNameList",userNameList);

+ 18 - 0
src/main/java/com/fdkankan/ucenter/mapper/ISceneCooperationCountMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.fdkankan.ucenter.entity.SceneCooperationCount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-20
+ */
+@Mapper
+public interface ISceneCooperationCountMapper extends BaseMapper<SceneCooperationCount> {
+
+}

+ 2 - 2
src/main/java/com/fdkankan/ucenter/mq/consumer/OrderDownConsumer.java

@@ -75,7 +75,7 @@ public class OrderDownConsumer {
                 case 5 :   payType = 2;break;
             }
             if(order.getPayStatus() != 1){
-                log.error("order-payResult----支付失败:{}",order);
+                log.info("order-payResult----支付失败:{}",order);
                 return;
             }
             if("incrementOrder".equals(order.getOrderType())){
@@ -91,7 +91,7 @@ public class OrderDownConsumer {
                 productOrderService.handleOrder(order.getOrderSn(),order.getTradeNo(),order.getOpenId(),payType);
             }
         }catch (Exception e){
-            log.error("order-payResult----消费失败",e);
+            log.info("order-payResult----消费失败",e);
         }finally {
 
         }

+ 21 - 0
src/main/java/com/fdkankan/ucenter/service/ISceneCooperationCountService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.ucenter.service;
+
+import com.fdkankan.ucenter.entity.SceneCooperationCount;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-20
+ */
+public interface ISceneCooperationCountService extends IService<SceneCooperationCount> {
+
+    void saveCount(List<String> numList, Integer size);
+
+     List<SceneCooperationCount> getByNumList(List<String> numList);
+}

+ 67 - 0
src/main/java/com/fdkankan/ucenter/service/impl/SceneCooperationCountServiceImpl.java

@@ -0,0 +1,67 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.ucenter.entity.SceneCooperationCount;
+import com.fdkankan.ucenter.mapper.ISceneCooperationCountMapper;
+import com.fdkankan.ucenter.service.ISceneCooperationCountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-20
+ */
+@Service
+public class SceneCooperationCountServiceImpl extends ServiceImpl<ISceneCooperationCountMapper, SceneCooperationCount> implements ISceneCooperationCountService {
+
+    @Override
+    public void saveCount(List<String> numList, Integer size) {
+        if(numList == null || numList.isEmpty() || size <=1){
+            return;
+        }
+        List<SceneCooperationCount> sceneCooperationCounts = this.getByNumList(numList);
+        List<String> dbNumList = sceneCooperationCounts.stream().map(SceneCooperationCount::getNum).collect(Collectors.toList());
+
+        List<SceneCooperationCount> saveList = new ArrayList<>();
+        for (String num : numList) {
+            if(!dbNumList.contains(num)){
+                SceneCooperationCount count = new SceneCooperationCount();
+                count.setNum(num);
+                count.setCount(size);
+                saveList.add(count);
+            }
+        }
+        if(!saveList.isEmpty()){
+            this.saveBatch(saveList);
+        }
+
+        List<Integer> updateList = new ArrayList<>();
+        for (SceneCooperationCount sceneCooperationCount : sceneCooperationCounts) {
+            if(sceneCooperationCount.getCount() < size){
+                updateList.add(sceneCooperationCount.getId());
+            }
+        }
+        if(!updateList.isEmpty()){
+            LambdaUpdateWrapper<SceneCooperationCount> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.in(SceneCooperationCount::getId,updateList);
+            wrapper.set(SceneCooperationCount::getCount,size);
+            this.update(wrapper);
+        }
+    }
+
+    @Override
+    public List<SceneCooperationCount> getByNumList(List<String> numList) {
+        LambdaQueryWrapper<SceneCooperationCount> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(SceneCooperationCount::getNum,numList);
+        return this.list(wrapper);
+    }
+}

+ 10 - 8
src/main/java/com/fdkankan/ucenter/service/impl/SceneCooperationServiceImpl.java

@@ -67,6 +67,8 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
     IProductOrderService productOrderService;
     @Autowired
     IProductCooperationService productCooperationService;
+    @Autowired
+    ISceneCooperationCountService sceneCooperationCountService;
 
     @Override
     public Long getCooperationSceneNum(Long userId, List<Integer> sceneSourceList) {
@@ -344,6 +346,7 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
             saveCooperationCommon(user,lang,users,proList,plusList,null,"scene");
 
         }
+        sceneCooperationCountService.saveCount(numList,userIds.size());
 
     }
 
@@ -357,15 +360,14 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
 
 
     private ProductOrder checkNeedPay(List<String> numList, List<User> users,User loginUser,Integer payType,Integer timeZone,Long cameraId,String lang) {
+        List<SceneCooperationCount> freeCountList = sceneCooperationCountService.getByNumList(numList);
+        HashMap<String,Integer> freeMap = new HashMap<>();
+        freeCountList.forEach(e -> freeMap.put(e.getNum(),e.getCount()));
+
         Integer totalCount = 0;
-        HashMap<String, List<User>> map = this.getByNumList(numList);
-        for (String num : map.keySet()) {
-            List<User> dbUserList = map.get(num);
-            if (dbUserList.isEmpty()){
-                totalCount += users.size() -1 ;
-                continue;
-            }
-            totalCount +=  users.size() - dbUserList.size() ;
+        for (String num : numList) {
+            Integer freeCount = freeMap.get(num) == null ? 1 :freeMap.get(num);
+            totalCount +=  users.size() - freeCount ;
 
         }
         if(totalCount <=0){

+ 5 - 0
src/main/resources/mapper/ucenter/SceneCooperationCountMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.ucenter.mapper.ISceneCooperationCountMapper">
+
+</mapper>