Преглед изворни кода

同步押金设置记录,费率设置记录,机具券表,机具券划拨表

mac пре 2 година
родитељ
комит
94ae5bfa36
43 измењених фајлова са 1250 додато и 85 уклоњено
  1. 0 6
      kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/component/SkyResourceServerConfiguration.java
  2. 6 6
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachinePledge.java
  3. 24 6
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineRatio.java
  4. 3 3
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransfer.java
  5. 94 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransferInfo.java
  6. 4 0
      kxs-product/kxs-product-biz/pom.xml
  7. 39 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/config/AesOldCryptoConfig.java
  8. 8 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java
  9. 17 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketTransferInfoMapper.java
  10. 15 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketTransferInfoService.java
  11. 19 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketTransferInfoServiceImpl.java
  12. 96 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/task/KxsProductTask.java
  13. 13 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml
  14. 2 2
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachinePledgeMapper.xml
  15. 4 1
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineRatioMapper.xml
  16. 17 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferInfoMapper.xml
  17. 1 1
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferMapper.xml
  18. 25 0
      kxs-product/kxs-product-biz/src/test/java/com/kxs/product/biz/TestData.java
  19. 45 46
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsForAmountWithdrawServiceImpl.java
  20. 26 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteOldService.java
  21. 47 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/KxsOldApFeignClientConfiguration.java
  22. 1 0
      kxs-system/kxs-system-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  23. 30 5
      kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java
  24. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsMachinePledgeMapper.java
  25. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsMachineRatioMapper.java
  26. 20 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketMapper.java
  27. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketTransferInfoMapper.java
  28. 25 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketTransferMapper.java
  29. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsMachinePledgeService.java
  30. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsMachineRatioService.java
  31. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketService.java
  32. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketTransferInfoService.java
  33. 26 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketTransferService.java
  34. 88 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachinePledgeServiceImpl.java
  35. 94 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachineRatioServiceImpl.java
  36. 95 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketServiceImpl.java
  37. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketTransferInfoServiceImpl.java
  38. 160 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketTransferServiceImpl.java
  39. 19 7
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/store/impl/KxsMachineRecycleServiceImpl.java
  40. 4 1
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsLeaderServiceImpl.java
  41. 5 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsPartnerServiceImpl.java
  42. 14 1
      kxs-transfer/src/main/resources/import.txt
  43. 22 0
      kxs-user/kxs-user-biz/src/test/java/com/kxs/user/biz/ImportData.java

+ 0 - 6
kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/component/SkyResourceServerConfiguration.java

@@ -12,18 +12,13 @@ import com.kxs.common.security.support.password.OAuth2ResourceOwnerPasswordAuthe
 import com.kxs.common.security.support.sms.OAuth2ResourceOwnerSmsAuthenticationConverter;
 import com.kxs.common.security.support.sms.OAuth2ResourceOwnerSmsAuthenticationProvider;
 import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
 import org.springframework.security.config.annotation.web.configurers.RequestCacheConfigurer;
 import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
 import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
@@ -32,7 +27,6 @@ import org.springframework.security.oauth2.server.authorization.token.Delegating
 import org.springframework.security.oauth2.server.authorization.token.OAuth2RefreshTokenGenerator;
 import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenGenerator;
 import org.springframework.security.oauth2.server.authorization.web.authentication.*;
-import org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector;
 import org.springframework.security.web.DefaultSecurityFilterChain;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.AuthenticationConverter;

+ 6 - 6
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachinePledge.java

@@ -75,10 +75,10 @@ public class KxsMachinePledge extends Model<KxsMachinePledge> implements Seriali
 
 
     /**
-     * 机具ID
+     * 机具
      */
-    @Schema(description = "机具ID")
-    private Integer machineId;
+    @Schema(description = "机具")
+    private String posSn;
 
 
     /**
@@ -110,10 +110,10 @@ public class KxsMachinePledge extends Model<KxsMachinePledge> implements Seriali
 
 
     /**
-     * 品牌
+     * 品牌
      */
-    @Schema(description = "品牌")
-    private String brandName;
+    @Schema(description = "品牌")
+    private Integer brandId;
 
 
     /**

+ 24 - 6
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineRatio.java

@@ -66,6 +66,12 @@ public class KxsMachineRatio extends Model<KxsMachineRatio> implements Serializa
     @Schema(description = "版本")
     private Integer version;
 
+    /**
+     * 机具ID
+     */
+    @Schema(description = "机具ID")
+    private Integer machineId;
+
 
     /**
      * 用户ID
@@ -75,10 +81,10 @@ public class KxsMachineRatio extends Model<KxsMachineRatio> implements Serializa
 
 
     /**
-     * 机具ID
+     * 机具
      */
-    @Schema(description = "机具ID")
-    private Integer machineId;
+    @Schema(description = "机具")
+    private String posSn;
 
 
     /**
@@ -103,10 +109,22 @@ public class KxsMachineRatio extends Model<KxsMachineRatio> implements Serializa
 
 
     /**
-     * 品牌名
+     * 品牌
+     */
+    @Schema(description = "品牌")
+    private Integer brandId;
+
+    /**
+     * 商户ID
+     */
+    @Schema(description = "商户ID")
+    private Integer merchantId;
+
+    /**
+     * 状态 0设置失败 1设置成功
      */
-    @Schema(description = "品牌名")
-    private String brandName;
+    @Schema(description = "状态 0设置失败 1设置成功")
+    private Integer status;
 
 
     /**

+ 3 - 3
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransfer.java

@@ -68,10 +68,10 @@ public class KxsTicketTransfer extends Model<KxsTicketTransfer> implements Seria
 
 
     /**
-     * 券码集合
+     * 订单号
      */
-    @Schema(description = "券码集合")
-    private String ticketCodes;
+    @Schema(description = "订单号")
+    private String orderSn;
 
 
     /**

+ 94 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsTicketTransferInfo.java

@@ -0,0 +1,94 @@
+package com.kxs.product.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表实体类
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsTicketTransferInfo extends Model<KxsTicketTransferInfo> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private Integer delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 券码ID
+     */
+    @Schema(description = "券码ID")
+    private Integer ticketId;
+
+
+    /**
+     * 划拨订单号
+     */
+    @Schema(description = "划拨订单号")
+    private String orderSn;
+
+
+    /**
+     * 券码
+     */
+    @Schema(description = "券码")
+    private String ticketCode;
+
+
+
+
+}
+

+ 4 - 0
kxs-product/kxs-product-biz/pom.xml

@@ -71,6 +71,10 @@
             <groupId>com.kxs</groupId>
             <artifactId>kxs-common-swagger</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-crypto</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 39 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/config/AesOldCryptoConfig.java

@@ -0,0 +1,39 @@
+package com.kxs.product.biz.config;
+
+import cn.hutool.crypto.symmetric.AES;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 对接老平台的请求加密
+ * 对称加密配置类
+ *
+ * @author Lxq
+ * @date 2023-11-03
+ */
+@Configuration(proxyBeanMethods = false)
+@RequiredArgsConstructor
+public class AesOldCryptoConfig {
+
+
+	private final static  String KEY_AND_IV = "*ga34|^7";
+	private final static  String ENCODE_MODE = "CBC";
+	private final static  String ENCODE_PADDING = "PKCS7Padding";
+
+	/**
+	 * <p>
+	 * aes加密配置 此处设在配置类可以避免每次请求都去创建加密类,以此节约性能
+	 * </p>
+	 * @return {@link AES}
+	 */
+	@Bean("cryptoOldAes")
+	public AES cryptoOldAes() {
+		return new AES(ENCODE_MODE, ENCODE_PADDING,
+				// 密钥,可以自定义
+				KEY_AND_IV.getBytes(),
+				// iv加盐,按照实际需求添加
+				KEY_AND_IV.getBytes());
+	}
+
+}

+ 8 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java

@@ -111,5 +111,13 @@ public interface KxsMachineMapper extends BaseMapper<KxsMachine> {
      * @return {@link List}<{@link KxsMachine}>
      */
     List<KxsMachine> selectDeductList(@Param("query") KxsMachine machineQuery, @Param("endDay") LocalDateTime endDay);
+
+    /**
+     * 查询循环过期指定日期的机具
+     *
+     * @param endDay 过期时间
+     * @return {@link List}<{@link KxsMachine}>
+     */
+    List<KxsMachine> selectExpireDeductList(LocalDateTime endDay);
 }
 

+ 17 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsTicketTransferInfoMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.product.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+@Mapper
+public interface KxsTicketTransferInfoMapper extends BaseMapper<KxsTicketTransferInfo> {
+
+}
+

+ 15 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsTicketTransferInfoService.java

@@ -0,0 +1,15 @@
+package com.kxs.product.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表服务接口
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+public interface KxsTicketTransferInfoService extends IService<KxsTicketTransferInfo> {
+
+}
+

+ 19 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketTransferInfoServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.product.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.biz.mapper.KxsTicketTransferInfoMapper;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+import com.kxs.product.biz.service.KxsTicketTransferInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+@Service("kxsTicketTransferInfoService")
+public class KxsTicketTransferInfoServiceImpl extends ServiceImpl<KxsTicketTransferInfoMapper, KxsTicketTransferInfo> implements KxsTicketTransferInfoService {
+
+}
+

+ 96 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/task/KxsProductTask.java

@@ -0,0 +1,96 @@
+package com.kxs.product.biz.task;
+
+import cn.hutool.crypto.symmetric.AES;
+import com.alibaba.fastjson.JSON;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.model.KxsMachineDeduct;
+import com.kxs.product.biz.mapper.KxsMachineDeductMapper;
+import com.kxs.product.biz.mapper.KxsMachineMapper;
+import com.kxs.system.api.feign.RemoteOldService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 产品模块定时任务
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-13
+ */
+@Configuration
+@EnableAsync
+@EnableScheduling
+@RequiredArgsConstructor
+@Slf4j
+public class KxsProductTask {
+
+    private final KxsMachineMapper kxsMachineMapper;
+
+    private final KxsMachineDeductMapper kxsMachineDeductMapper;
+
+    private final RedisTemplate<String, Object> redisTemplate;
+
+    private final RemoteOldService remoteOldService;
+
+    private static final String LOCK = "task-job-lock";
+
+    private static final String KEY = "distributed-locks";
+
+    private final AES cryptoOldAes;
+
+    @Value("${kxs.old.url}")
+    private String url;
+
+    /**
+     * 循环过期机具添加预扣款
+     *
+     */
+//    @Async(value = "getAsyncExecutor")
+//    @Scheduled(cron = "0 0 */1 * * ?")
+//    public void recycleMachineSchedule() {
+//        Boolean lock = false;
+//        try {
+//            //分布式锁
+//            lock = redisTemplate.opsForValue().setIfAbsent(KEY, LOCK);
+//            if (Boolean.TRUE.equals(lock)) {
+//
+//                LocalDateTime endDay = LocalDate.now().minusDays(30).atStartOfDay();
+//                List<KxsMachine> machines = kxsMachineMapper.selectExpireDeductList(endDay);
+//
+//                for (KxsMachine machine : machines) {
+//                    HashMap<String, Object> param = new HashMap<>();
+//                    HashMap<String, Object> data = new HashMap<>();
+//                    data.put("PosSn", machine.getPosSn());
+////                    String body  = cryptoOldAes.encryptHex(JSON.toJSONString(data));
+//                    param.put("value", JSON.toJSONString(data));
+//                    R result = remoteOldService.savePosAdvance(param);
+//                    if(result.getStatus() == 1){
+//                        log.info("查询数据:{}", machines);
+//
+//                        KxsMachineDeduct machineDeduct = new KxsMachineDeduct();
+//                        machineDeduct.setPosSn(machine.getPosSn());
+//                        machineDeduct.setRemark("已添加预扣款");
+//                        kxsMachineDeductMapper.insert(machineDeduct);
+//                    }
+//                }
+//
+//            }
+//        } finally {
+//            if (Boolean.TRUE.equals(lock)) {
+//                redisTemplate.delete(KEY);
+//            }
+//        }
+//    }
+}

+ 13 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml

@@ -183,5 +183,18 @@
           and a.bind_status = #{query.bindStatus}
           and a.recycle_end_time &lt; #{query.recycleEndTime}
     </select>
+    <select id="selectExpireDeductList" resultMap="KxsMachineMap">
+        select a.id, a.pos_sn, recycle_end_time
+        from kxs_machine a
+                 left join kxs_machine_deduct b on a.pos_sn = b.pos_sn
+        where
+          b.pos_sn is null
+          and a.del_flag = 0
+          and a.status = 1
+          and a.bind_status = 0
+          and a.recycle_end_time &lt; #{endDay}
+          order by recycle_end_time desc
+          limit 1
+    </select>
 
 </mapper>

+ 2 - 2
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachinePledgeMapper.xml

@@ -9,12 +9,12 @@
         <result column="del_flag" property="delFlag" />
         <result column="version" property="version" />
         <result column="user_id" property="userId" />
-        <result column="machine_id" property="machineId" />
+        <result column="pos_sn" property="posSn" />
         <result column="before_pledge" property="beforePledge" />
         <result column="after_pledge" property="afterPledge" />
         <result column="remark" property="remark" />
         <result column="create_by" property="createBy" />
-        <result column="brand_name" property="brandName" />
+        <result column="brand_id" property="brandId" />
         <result column="result" property="result" />
 
     </resultMap>

+ 4 - 1
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineRatioMapper.xml

@@ -9,11 +9,14 @@
         <result column="del_flag" property="delFlag" />
         <result column="version" property="version" />
         <result column="user_id" property="userId" />
+        <result column="pos_sn" property="posSn" />
+        <result column="merchant_id" property="merchantId" />
         <result column="machine_id" property="machineId" />
         <result column="ratio" property="ratio" />
         <result column="remark" property="remark" />
         <result column="create_by" property="createBy" />
-        <result column="brand_name" property="brandName" />
+        <result column="brand_id" property="brandId" />
+        <result column="status" property="status" />
         <result column="result" property="result" />
 
     </resultMap>

+ 17 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferInfoMapper.xml

@@ -0,0 +1,17 @@
+<?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.kxs.product.biz.mapper.KxsTicketTransferInfoMapper">
+
+    <resultMap type="com.kxs.product.api.model.KxsTicketTransferInfo" id="KxsTicketTransferInfoMap">
+        <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="ticket_id" property="ticketId" />
+        <result column="order_sn" property="orderSn" />
+        <result column="ticket_code" property="ticketCode" />
+
+    </resultMap>
+
+</mapper>

+ 1 - 1
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsTicketTransferMapper.xml

@@ -8,7 +8,7 @@
         <result column="update_time" property="updateTime" />
         <result column="del_flag" property="delFlag" />
         <result column="version" property="version" />
-        <result column="ticket_codes" property="ticketCodes" />
+        <result column="order_sn" property="orderSn" />
         <result column="send_user_id" property="sendUserId" />
         <result column="send_user_name" property="sendUserName" />
         <result column="send_user_code" property="sendUserCode" />

+ 25 - 0
kxs-product/kxs-product-biz/src/test/java/com/kxs/product/biz/TestData.java

@@ -0,0 +1,25 @@
+package com.kxs.product.biz;
+
+import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.biz.mapper.KxsMachineMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@SpringBootTest
+public class TestData {
+
+    @Autowired
+    private KxsMachineMapper kxsMachineMapper;
+
+    @Test
+    public void test(){
+//        LocalDateTime endDay = LocalDate.now().minusDays(30).atStartOfDay();
+//        List<KxsMachine> machines = kxsMachineMapper.selectExpireDeductList(endDay);
+//        System.out.println(machines);
+    }
+}

+ 45 - 46
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsForAmountWithdrawServiceImpl.java

@@ -43,7 +43,6 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
 
     @Override
     @GlobalTransactional
-    @Transactional(rollbackFor = Exception.class)
     public R forAmountWithdraw(ForAmountWithdrawDTO param, Integer withdrawType) {
 
         Long userId = SecurityUtils.getUser().getId();
@@ -104,19 +103,19 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
      * @param userLimit            用户限制
      */
     private void bankWithdrawAmount(KxsForAmountWithdraw kxsForAmountWithdraw, ForAmountWithdrawDTO param, KxsWarehouseLimit userLimit) {
-//        //银行卡最大提现金额
-//        BigDecimal bankCashAmount = NumberUtil.sub(userLimit.getBankRechargeAmount(), userLimit.getBankWithdrawAmount());
-//        //银行卡提现
-//        if(param.getBankAmount() > bankCashAmount.intValue()){
-//            throw new GlobalCustomerException("提现到银行卡超出限额");
-//        }
-//        kxsForAmountWithdraw.setAmount(BigDecimal.valueOf(param.getBankAmount()));
-//        baseMapper.insert(kxsForAmountWithdraw);
-//
-//        //扣减可用余额,扣减临额
-//        userLimit.setForAmount(NumberUtil.sub(userLimit.getForAmount(),param.getBankAmount()));
-//        userLimit.setValidAmount(NumberUtil.sub(userLimit.getValidAmount(),param.getBankAmount()));
-//        kxsWarehouseLimitMapper.updateById(userLimit);
+        //银行卡最大提现金额
+        BigDecimal bankCashAmount = userLimit.getForAmount();
+        //银行卡提现
+        if(param.getBankAmount() > bankCashAmount.intValue()){
+            throw new GlobalCustomerException("提现到银行卡超出限额");
+        }
+        kxsForAmountWithdraw.setAmount(BigDecimal.valueOf(param.getBankAmount()));
+        baseMapper.insert(kxsForAmountWithdraw);
+
+        //扣减可用余额,扣减临额
+        userLimit.setForAmount(NumberUtil.sub(userLimit.getForAmount(),param.getBankAmount()));
+        userLimit.setValidAmount(NumberUtil.sub(userLimit.getValidAmount(),param.getBankAmount()));
+        kxsWarehouseLimitMapper.updateById(userLimit);
 
     }
 
@@ -129,38 +128,38 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
      */
     public void yueWithdrawAmount(KxsForAmountWithdraw kxsForAmountWithdraw, ForAmountWithdrawDTO param, KxsWarehouseLimit userLimit){
 
-//        //余额最大提现金额
-//        BigDecimal yueCashAmount = NumberUtil.sub(userLimit.getYueRechargeAmount(), userLimit.getYueWithdrawAmount());
-//        //余额提现
-//        if(param.getYueAmount() > yueCashAmount.intValue()){
-//            throw new GlobalCustomerException("提现到余额超出限额");
-//        }
-//        kxsForAmountWithdraw.setAmount(BigDecimal.valueOf(param.getYueAmount()));
-//        kxsForAmountWithdraw.setStatus(1);
-//        baseMapper.insert(kxsForAmountWithdraw);
-//
-//        //扣减可用余额,扣减临额
-//        userLimit.setForAmount(NumberUtil.sub(userLimit.getForAmount(),param.getYueAmount()));
-//        userLimit.setValidAmount(NumberUtil.sub(userLimit.getValidAmount(),param.getYueAmount()));
-//        kxsWarehouseLimitMapper.updateById(userLimit);
-//
-//        KxsUserAmountLog userAmountLog = new KxsUserAmountLog();
-//        userAmountLog.setUserId(kxsForAmountWithdraw.getUserId());
-//        userAmountLog.setKind(KindTypeEnum.ADD.getType());
-//        //分仓临时额度提现
-//        if(kxsForAmountWithdraw.getWithdrawType() == 0){
-//            userAmountLog.setVariationType(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getType());
-//            userAmountLog.setVariationCause(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getDescription());
-//        }else{
-//            userAmountLog.setVariationType(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getType());
-//            userAmountLog.setVariationCause(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getDescription());
-//        }
-//        userAmountLog.setAmount(BigDecimal.valueOf(param.getYueAmount()));
-//
-//        R<Boolean> booleanR = remoteKxsUserService.userAmountChange(userAmountLog, SecurityConstants.FROM_IN);
-//        if(!booleanR.getData()){
-//            throw new GlobalCustomerException("提现申请失败");
-//        }
+        //余额最大提现金额
+        BigDecimal yueCashAmount = userLimit.getYueForAmount();
+        //余额提现
+        if(param.getYueAmount() > yueCashAmount.intValue()){
+            throw new GlobalCustomerException("提现到余额超出限额");
+        }
+        kxsForAmountWithdraw.setAmount(BigDecimal.valueOf(param.getYueAmount()));
+        kxsForAmountWithdraw.setStatus(1);
+        baseMapper.insert(kxsForAmountWithdraw);
+
+        //扣减可用余额,扣减临额
+        userLimit.setYueForAmount(NumberUtil.sub(userLimit.getForAmount(),param.getYueAmount()));
+        userLimit.setValidAmount(NumberUtil.sub(userLimit.getValidAmount(),param.getYueAmount()));
+        kxsWarehouseLimitMapper.updateById(userLimit);
+
+        KxsUserAmountLog userAmountLog = new KxsUserAmountLog();
+        userAmountLog.setUserId(kxsForAmountWithdraw.getUserId());
+        userAmountLog.setKind(KindTypeEnum.ADD.getType());
+        //分仓临时额度提现
+        if(kxsForAmountWithdraw.getWithdrawType() == 0){
+            userAmountLog.setVariationType(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getType());
+            userAmountLog.setVariationCause(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getDescription());
+        }else{
+            userAmountLog.setVariationType(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getType());
+            userAmountLog.setVariationCause(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getDescription());
+        }
+        userAmountLog.setAmount(BigDecimal.valueOf(param.getYueAmount()));
+
+        R<Boolean> booleanR = remoteKxsUserService.userAmountChange(userAmountLog, SecurityConstants.FROM_IN);
+        if(booleanR.getStatus() == 1 && !booleanR.getData()){
+            throw new GlobalCustomerException("提现申请失败");
+        }
 
     }
 

+ 26 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteOldService.java

@@ -0,0 +1,26 @@
+package com.kxs.system.api.feign;
+
+import com.kxs.common.core.util.R;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.service.annotation.PostExchange;
+
+import java.util.Map;
+
+
+/**
+ * 远程老平台接口
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-14
+ */
+public interface RemoteOldService {
+
+	/**
+	 * 循环过期机具添加预扣款
+	 * @param param 请求实体
+	 */
+	@PostExchange("/v1/kxsmain/tochargebackrecord/addtochargebackrecord")
+	R savePosAdvance(@RequestParam Map<String, Object> param);
+
+}

+ 47 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/KxsOldApFeignClientConfiguration.java

@@ -0,0 +1,47 @@
+package com.kxs.system.api.feign.config;
+
+import com.kxs.system.api.feign.RemoteOldService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.reactive.function.client.support.WebClientAdapter;
+import org.springframework.web.service.invoker.HttpServiceProxyFactory;
+
+
+/**
+ * KXS 旧客户端ap 远程调用配置
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-14
+ */
+@Configuration
+@RequiredArgsConstructor
+public class KxsOldApFeignClientConfiguration {
+
+
+	@Value("${kxs.old.url}")
+	private String baseUrl;
+
+	@Bean("kxsOldFeignClient")
+	public WebClient oauthRequestInterceptor() {
+
+		return WebClient.builder().baseUrl(baseUrl).build();
+	}
+
+	/**
+	 * 远程老平台接口
+	 * @param client 客户端
+	 * @return 远程老平台接口
+	 */
+	@Bean
+	RemoteOldService remoteOldService(@Qualifier("kxsOldFeignClient") WebClient client) {
+		HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
+		return factory.createClient(RemoteOldService.class);
+	}
+
+
+
+}

+ 1 - 0
kxs-system/kxs-system-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +1,2 @@
 com.kxs.system.api.feign.config.KxsSystemFeignClientConfiguration
+com.kxs.system.api.feign.config.KxsOldApFeignClientConfiguration

+ 30 - 5
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -10,8 +10,7 @@ import com.kxs.transfer.api.model.KxsDtsLog;
 import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.transfer.api.service.KxsDtsErrorLogService;
 import com.kxs.transfer.api.service.KxsDtsLogService;
-import com.kxs.transfer.api.service.product.KxsMachineService;
-import com.kxs.transfer.api.service.product.KxsShopGoodsService;
+import com.kxs.transfer.api.service.product.*;
 import com.kxs.transfer.api.service.store.KxsMachineRecycleService;
 import com.kxs.transfer.api.service.store.KxsWarehouseService;
 import com.kxs.transfer.api.service.sys.KxsMorningLogService;
@@ -61,6 +60,11 @@ public class DtsController {
 
     //产品模块
     private final KxsShopGoodsService kxsShopGoodsService;
+    private final KxsMachinePledgeService kxsMachinePledgeService;
+    private final KxsMachineRatioService kxsMachineRatioService;
+    private final KxsTicketService kxsTicketService;
+    private final KxsTicketTransferService kxsTicketTransferService;
+    private final KxsTicketTransferInfoService kxsTicketTransferInfoService;
 
     //仓库模块
     private final KxsWarehouseService kxsWarehouseService;
@@ -175,9 +179,9 @@ public class DtsController {
 
 
             //商品表同步
-//            if ("Products".equals(dmlData.getTableName())) {
-//                kxsShopGoodsService.changeData(dmlData);
-//            }
+            if ("Products".equals(dmlData.getTableName())) {
+                kxsShopGoodsService.changeData(dmlData);
+            }
             //每日晨会同步
             if ("SchoolMorningMeet".equals(dmlData.getTableName())) {
                 kxsMorningService.changeData(dmlData);
@@ -205,6 +209,27 @@ public class DtsController {
             if ("RecycMachineOrderPos".equals(dmlData.getTableName())) {
                 kxsMachineRecycleService.changeInfoData(dmlData);
             }
+            //机具押金调整记录
+            if ("MerchantDepositSet".equals(dmlData.getTableName())) {
+                kxsMachinePledgeService.changeData(dmlData);
+            }
+            //机具费率调整记录
+            if ("PosMachinesFeeChangeRecord".equals(dmlData.getTableName())) {
+                kxsMachineRatioService.changeData(dmlData);
+            }
+            //券码表同步
+            if ("PosCoupons".equals(dmlData.getTableName())) {
+                kxsTicketService.changeData(dmlData);
+            }
+            //券码划拨表同步
+            if ("PosCouponOrders".equals(dmlData.getTableName())) {
+                kxsTicketTransferService.changeData(dmlData);
+            }
+            //券码划拨明细表同步
+            if ("PosCouponRecord".equals(dmlData.getTableName())) {
+                kxsTicketTransferService.changeInfoData(dmlData);
+            }
+
 
             //存储历史数据
             KxsDtsLog kxsDtsLog = new KxsDtsLog();

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsMachinePledgeMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.product;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.product.api.model.KxsMachinePledge;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽押金调整记录表(KxsMachinePledge)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Mapper
+@DS("product")
+public interface KxsMachinePledgeMapper extends BaseMapper<KxsMachinePledge> {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsMachineRatioMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.product;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.product.api.model.KxsMachineRatio;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽费率调整记录表(KxsMachineRatio)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Mapper
+@DS("product")
+public interface KxsMachineRatioMapper extends BaseMapper<KxsMachineRatio> {
+
+}
+

+ 20 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketMapper.java

@@ -0,0 +1,20 @@
+package com.kxs.transfer.api.mapper.product;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.product.api.model.KxsTicket;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽券码表(KxsTicket)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Mapper
+@DS("product")
+public interface KxsTicketMapper extends BaseMapper<KxsTicket> {
+
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketTransferInfoMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.product;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+@Mapper
+@DS("product")
+public interface KxsTicketTransferInfoMapper extends BaseMapper<KxsTicketTransferInfo> {
+
+}
+

+ 25 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/product/KxsTicketTransferMapper.java

@@ -0,0 +1,25 @@
+package com.kxs.transfer.api.mapper.product;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
+import com.kxs.product.api.model.KxsTicketTransfer;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 客小爽券码划拨记录表(KxsTicketTransfer)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Mapper
+@DS("product")
+public interface KxsTicketTransferMapper extends BaseMapper<KxsTicketTransfer> {
+
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsMachinePledgeService.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.service.product;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsMachinePledge;
+import com.kxs.transfer.api.model.table.DMLData;
+
+/**
+ * 客小爽押金调整记录表(KxsMachinePledge)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+public interface KxsMachinePledgeService extends IService<KxsMachinePledge> {
+
+    void changeData(DMLData dmlData);
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsMachineRatioService.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.service.product;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsMachineRatio;
+import com.kxs.transfer.api.model.table.DMLData;
+
+/**
+ * 客小爽费率调整记录表(KxsMachineRatio)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+public interface KxsMachineRatioService extends IService<KxsMachineRatio> {
+
+    void changeData(DMLData dmlData);
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketService.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.service.product;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsTicket;
+import com.kxs.transfer.api.model.table.DMLData;
+
+/**
+ * 客小爽券码表(KxsTicket)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+public interface KxsTicketService extends IService<KxsTicket> {
+
+    void changeData(DMLData dmlData);
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketTransferInfoService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.product;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表服务接口
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+public interface KxsTicketTransferInfoService extends IService<KxsTicketTransferInfo> {
+
+}
+

+ 26 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/KxsTicketTransferService.java

@@ -0,0 +1,26 @@
+package com.kxs.transfer.api.service.product;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferDTO;
+import com.kxs.product.api.dto.kxsapp.ticket.TicketTransferQuery;
+import com.kxs.product.api.model.KxsTicketTransfer;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferDetailVO;
+import com.kxs.product.api.vo.kxsapp.ticket.TicketTransferListVO;
+import com.kxs.transfer.api.model.table.DMLData;
+
+/**
+ * 客小爽券码划拨记录表(KxsTicketTransfer)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+public interface KxsTicketTransferService extends IService<KxsTicketTransfer> {
+
+    void changeData(DMLData dmlData);
+
+    void changeInfoData(DMLData dmlData);
+}
+

+ 88 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachinePledgeServiceImpl.java

@@ -0,0 +1,88 @@
+package com.kxs.transfer.api.service.product.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsBrand;
+import com.kxs.product.api.model.KxsMachinePledge;
+import com.kxs.product.api.model.KxsMachineRatio;
+import com.kxs.store.api.model.KxsMachineRecycle;
+import com.kxs.store.api.model.KxsWarehouse;
+import com.kxs.transfer.api.mapper.product.KxsMachinePledgeMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.service.product.KxsMachinePledgeService;
+import com.kxs.user.api.model.KxsUser;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客小爽押金调整记录表(KxsMachinePledge)表服务实现类
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Service("kxsMachinePledgeService")
+public class KxsMachinePledgeServiceImpl extends ServiceImpl<KxsMachinePledgeMapper, KxsMachinePledge> implements KxsMachinePledgeService {
+
+    @Override
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        OperationType operation = dmlData.getOperation();
+
+        KxsMachinePledge machinePledge = new KxsMachinePledge();
+        machinePledge.setId(id);
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    machinePledge.setUserId(userId);
+                    break;
+                case "SeoTitle":
+                    machinePledge.setBeforePledge(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "DepositAmount":
+                    machinePledge.setAfterPledge(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ReturnNote":
+                    machinePledge.setResult(validFieldDataMap.get(field).toString());
+                    break;
+                case "Sort":
+                    machinePledge.setBrandId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "SnNo":
+                    machinePledge.setPosSn(validFieldDataMap.get(field).toString());
+                    break;
+                case "CreateDate":
+                    machinePledge.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    machinePledge.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        KxsMachinePledge kxsMachinePledge = baseMapper.selectById(machinePledge.getId());
+
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsMachinePledge == null){
+                baseMapper.insert(machinePledge);
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+            baseMapper.updateById(machinePledge);
+        }
+    }
+}
+

+ 94 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachineRatioServiceImpl.java

@@ -0,0 +1,94 @@
+package com.kxs.transfer.api.service.product.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsMachinePledge;
+import com.kxs.product.api.model.KxsMachineRatio;
+import com.kxs.transfer.api.mapper.product.KxsMachineRatioMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.service.product.KxsMachineRatioService;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客小爽费率调整记录表(KxsMachineRatio)表服务实现类
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Service("kxsMachineRatioService")
+public class KxsMachineRatioServiceImpl extends ServiceImpl<KxsMachineRatioMapper, KxsMachineRatio> implements KxsMachineRatioService {
+
+    @Override
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsMachineRatio machineRatio = new KxsMachineRatio();
+        machineRatio.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    machineRatio.setUserId(userId);
+                    break;
+                case "Status":
+                    int status = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    machineRatio.setStatus(status == -1 ? 0 : 1);
+                    break;
+                case "ChangeFee":
+                    machineRatio.setRatio(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "SeoDescription":
+                    machineRatio.setRemark(validFieldDataMap.get(field).toString());
+                    break;
+                case "Sort":
+                    machineRatio.setBrandId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "PosId":
+                    machineRatio.setMachineId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "MerchantId":
+                    machineRatio.setMerchantId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "PosSn":
+                    machineRatio.setPosSn(validFieldDataMap.get(field).toString());
+                    break;
+                case "CreateDate":
+                    machineRatio.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    machineRatio.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        KxsMachineRatio kxsMachineRatio = baseMapper.selectById(machineRatio.getId());
+
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsMachineRatio == null){
+                baseMapper.insert(machineRatio);
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            baseMapper.updateById(machineRatio);
+        }
+
+
+    }
+}
+

+ 95 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketServiceImpl.java

@@ -0,0 +1,95 @@
+package com.kxs.transfer.api.service.product.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsMachineRatio;
+import com.kxs.product.api.model.KxsTicket;
+import com.kxs.transfer.api.mapper.product.KxsTicketMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.service.product.KxsTicketService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客小爽券码表(KxsTicket)表服务实现类
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Service("kxsTicketService")
+@RequiredArgsConstructor
+public class KxsTicketServiceImpl extends ServiceImpl<KxsTicketMapper, KxsTicket> implements KxsTicketService {
+    @Override
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsTicket ticket = new KxsTicket();
+        ticket.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    ticket.setUserId(userId);
+                    break;
+                case "IsUse":
+                    int isUse = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    if(isUse == 1){
+                        ticket.setStatus(isUse);
+                    }
+                    break;
+                case "IsLock":
+                    int isLock = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    if(isLock == 1){
+                        ticket.setStatus(2);
+                    }
+                    break;
+                case "ExchangeCode":
+                    ticket.setTicketCode(validFieldDataMap.get(field).toString());
+                    break;
+                case "QueryCount":
+                    ticket.setTicketType(Integer.parseInt(validFieldDataMap.get(field).toString()) - 1);
+                    break;
+                case "LeaderUserId":
+                    ticket.setLeaderId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "OpId":
+                    ticket.setPartnerId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "CreateDate":
+                    ticket.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    ticket.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        KxsTicket kxsTicket = baseMapper.selectById(ticket.getId());
+
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsTicket == null){
+                baseMapper.insert(ticket);
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            baseMapper.updateById(ticket);
+        }
+    }
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketTransferInfoServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.product.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+import com.kxs.transfer.api.mapper.product.KxsTicketTransferInfoMapper;
+import com.kxs.transfer.api.service.product.KxsTicketTransferInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 客小爽券码划拨记录明细表(KxsTicketTransferInfo)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-03-14 16:23:06
+ */
+@Service("kxsTicketTransferInfoService")
+public class KxsTicketTransferInfoServiceImpl extends ServiceImpl<KxsTicketTransferInfoMapper, KxsTicketTransferInfo> implements KxsTicketTransferInfoService {
+
+}
+

+ 160 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsTicketTransferServiceImpl.java

@@ -0,0 +1,160 @@
+package com.kxs.transfer.api.service.product.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsTicket;
+import com.kxs.product.api.model.KxsTicketTransfer;
+import com.kxs.product.api.model.KxsTicketTransferInfo;
+import com.kxs.transfer.api.mapper.product.KxsTicketMapper;
+import com.kxs.transfer.api.mapper.product.KxsTicketTransferInfoMapper;
+import com.kxs.transfer.api.mapper.product.KxsTicketTransferMapper;
+import com.kxs.transfer.api.mapper.user.KxsUserMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.service.product.KxsTicketTransferService;
+import com.kxs.user.api.model.KxsUser;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客小爽券码划拨记录表(KxsTicketTransfer)表服务实现类
+ *
+ * @author 系统
+ * @since 2023-12-20 10:09:35
+ */
+@Service("kxsTicketTransferService")
+@RequiredArgsConstructor
+public class KxsTicketTransferServiceImpl extends ServiceImpl<KxsTicketTransferMapper, KxsTicketTransfer> implements KxsTicketTransferService {
+
+    private final KxsUserMapper kxsUserMapper;
+
+
+    private final KxsTicketTransferInfoMapper kxsTicketTransferInfoMapper;
+
+    private final KxsTicketMapper kxsTicketMapper;
+
+    @Override
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsTicketTransfer ticketTransferInfo = new KxsTicketTransfer();
+        ticketTransferInfo.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "FromUserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    ticketTransferInfo.setSendUserId(userId);
+                    KxsUser user = kxsUserMapper.selectById(userId);
+                    if(user != null){
+                        ticketTransferInfo.setSendUserCode(user.getUserCode());
+                        ticketTransferInfo.setSendUserName(user.getUsername());
+                    }
+
+                    break;
+                case "ToUserId":
+                    int toUserId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    ticketTransferInfo.setToUserId(toUserId);
+                    KxsUser toUser = kxsUserMapper.selectById(toUserId);
+                    if(toUser != null){
+                        ticketTransferInfo.setToUserCode(toUser.getUserCode());
+                        ticketTransferInfo.setToUserName(toUser.getUsername());
+                    }
+                    break;
+                case "ChangeCount":
+                    ticketTransferInfo.setTransferNum(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "OrderNo":
+                    ticketTransferInfo.setOrderSn(validFieldDataMap.get(field).toString());
+                    break;
+                case "QueryCount":
+                    ticketTransferInfo.setTicketType(Integer.parseInt(validFieldDataMap.get(field).toString()) - 1);
+                    break;
+                case "CreateDate":
+                    ticketTransferInfo.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    ticketTransferInfo.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        KxsTicketTransfer kxsTicketTransfer = baseMapper.selectById(ticketTransferInfo.getId());
+
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsTicketTransfer == null){
+                baseMapper.insert(ticketTransferInfo);
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            baseMapper.updateById(ticketTransferInfo);
+        }
+    }
+
+    @Override
+    public void changeInfoData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsTicketTransferInfo ticketTransferInfo = new KxsTicketTransferInfo();
+        ticketTransferInfo.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "PosCouponId":
+                    int tid = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    KxsTicket ticket = kxsTicketMapper.selectById(tid);
+                    if(ticket != null){
+                        ticketTransferInfo.setTicketCode(ticket.getTicketCode());
+                    }
+                    ticketTransferInfo.setTicketId(tid);
+                    break;
+                case "ExchangeCode":
+                    ticketTransferInfo.setTicketCode(validFieldDataMap.get(field).toString());
+                    break;
+                case "OrderNo":
+                    ticketTransferInfo.setOrderSn(validFieldDataMap.get(field).toString());
+                    break;
+                case "CreateDate":
+                    ticketTransferInfo.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    ticketTransferInfo.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        KxsTicketTransferInfo kxsTicketTransferInfo = kxsTicketTransferInfoMapper.selectById(ticketTransferInfo.getId());
+
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsTicketTransferInfo == null){
+                kxsTicketTransferInfoMapper.insert(ticketTransferInfo);
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            kxsTicketTransferInfoMapper.updateById(ticketTransferInfo);
+        }
+    }
+}
+

+ 19 - 7
kxs-transfer/src/main/java/com/kxs/transfer/api/service/store/impl/KxsMachineRecycleServiceImpl.java

@@ -111,9 +111,14 @@ public class KxsMachineRecycleServiceImpl extends ServiceImpl<KxsMachineRecycleM
                     break;
             }
             KxsMachineRecycle kxsMachineRecycle = baseMapper.selectById(machineRecycle.getId());
-            if(kxsMachineRecycle == null){
-                baseMapper.insert(machineRecycle);
-            }else{
+            if(operation.equals(OperationType.INSERT)){
+                if(kxsMachineRecycle == null){
+                    baseMapper.insert(machineRecycle);
+                }
+            }
+
+            if(operation.equals(OperationType.UPDATE)){
+
                 baseMapper.updateById(machineRecycle);
             }
         }
@@ -130,6 +135,7 @@ public class KxsMachineRecycleServiceImpl extends ServiceImpl<KxsMachineRecycleM
 
         KxsMachineRecycleInfo machineRecycle = new KxsMachineRecycleInfo();
         machineRecycle.setId(id);
+        OperationType operation = dmlData.getOperation();
 
         for (String field : changeFieldList) {
 
@@ -168,13 +174,19 @@ public class KxsMachineRecycleServiceImpl extends ServiceImpl<KxsMachineRecycleM
                     machineRecycle.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
                     break;
             }
-            KxsMachineRecycleInfo kxsMachineRecycle = kxsMachineRecycleInfoMapper.selectById(machineRecycle.getId());
-            if (kxsMachineRecycle == null) {
+        }
+        KxsMachineRecycleInfo kxsMachineRecycle = kxsMachineRecycleInfoMapper.selectById(machineRecycle.getId());
+        if(operation.equals(OperationType.INSERT)){
+            if(kxsMachineRecycle == null){
                 kxsMachineRecycleInfoMapper.insert(machineRecycle);
-            } else {
-                kxsMachineRecycleInfoMapper.updateById(machineRecycle);
             }
         }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            kxsMachineRecycleInfoMapper.updateById(machineRecycle);
+        }
+
     }
 }
 

+ 4 - 1
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsLeaderServiceImpl.java

@@ -36,7 +36,10 @@ public class KxsLeaderServiceImpl extends ServiceImpl<KxsLeaderMapper, KxsLeader
 
         //操作类型
         OperationType operation = dmlData.getOperation();
-
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(leader.getId());
+            return;
+        }
         for (String field : changeFieldList) {
 
             switch (field) {

+ 5 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsPartnerServiceImpl.java

@@ -40,6 +40,11 @@ public class KxsPartnerServiceImpl extends ServiceImpl<KxsPartnerMapper, KxsPart
 
         //操作类型
         OperationType operation = dmlData.getOperation();
+
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(partner.getId());
+            return;
+        }
         for (String field : changeFieldList) {
 
             switch (field) {

+ 14 - 1
kxs-transfer/src/main/resources/import.txt

@@ -184,4 +184,17 @@ LEFT JOIN StoreHouse s on s.id = a.RecycStoreId
 SELECT a.Id as id, a.CreateDate as create_time, a.UpdateDate as update_time,
 a.SnNo as pos_sn, a.OrderId as order_id, a.BrandId as brand_id, a.ResultDate as confirm_time, a.CancelDate as cancel_time,
 case a.Status when -1 then 3 when 0 then 0 when 1 then 1 when 2 then 2 end status, b.RecycEndDate as recycle_end_time
-FROM RecycMachineOrderPos a LEFT JOIN PosMachinesTwo b on a.SnNo = b.PosSn
+FROM RecycMachineOrderPos a LEFT JOIN PosMachinesTwo b on a.SnNo = b.PosSn
+
+//押金调整记录表
+SELECT  a.Id as id, a.UserId as user_id, a.CreateDate as create_time, a.UpdateDate as update_time,
+ a.SeoTitle as before_pledge, a.DepositAmount as after_pledge, a.ReturnNote as result, a.sort as brand_id,
+a.SnNo as pos_sn
+FROM MerchantDepositSet a
+
+//费率调整记录
+SELECT  a.Id as id, a.UserId as user_id, a.CreateDate as create_time, a.UpdateDate as update_time,
+case a.status when -1 then 0 when 1 then 1 end as status, a.SeoDescription as remark, a.MerchantId as merchant_id,
+ a.ChangeFee as ratio, a.sort as brand_id, a.PosId as machine_id,
+a.PosSn as pos_sn
+FROM PosMachinesFeeChangeRecord a

+ 22 - 0
kxs-user/kxs-user-biz/src/test/java/com/kxs/user/biz/ImportData.java

@@ -0,0 +1,22 @@
+package com.kxs.user.biz;
+
+import com.kxs.user.biz.mapper.old.TradeDaySummaryMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+/**
+ * 导入数据
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-13
+ */
+@SpringBootTest
+public class ImportData {
+
+    @Autowired
+    private TradeDaySummaryMapper tradeDaySummaryMapper;
+
+}