lzy 1 هفته پیش
کامیت
d09045f97c

+ 33 - 0
.gitignore

@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 108 - 0
pom.xml

@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.zhentao</groupId>
+    <artifactId>liziyangsale</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>liziyangsale</name>
+    <description>liziyangsale</description>
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <spring-boot.version>2.7.6</spring-boot.version>
+    </properties>
+    <dependencies>
+
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>3.8.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.4</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.springframework.kafka</groupId>
+            <artifactId>spring-kafka</artifactId>
+        </dependency>
+
+
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+                <configuration>
+                    <mainClass>com.zhentao.LiziyangsaleApplication</mainClass>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 13 - 0
src/main/java/com/zhentao/LiziyangsaleApplication.java

@@ -0,0 +1,13 @@
+package com.zhentao;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class LiziyangsaleApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(LiziyangsaleApplication.class, args);
+    }
+
+}

+ 70 - 0
src/main/java/com/zhentao/controller/GoodsController.java

@@ -0,0 +1,70 @@
+package com.zhentao.controller;
+
+import com.zhentao.dto.AaaDto;
+import com.zhentao.dto.GoodsAddDto;
+import com.zhentao.service.GoodsService;
+import com.zhentao.util.Md5Utils;
+import com.zhentao.util.OrderNumberGenerator;
+import com.zhentao.vo.ResultVo;
+import org.apache.kafka.common.protocol.types.Field;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+import java.util.TreeMap;
+
+@RestController
+@RequestMapping("goods")
+public class GoodsController {
+
+
+    @Resource
+    private GoodsService goodsService;
+
+
+    @PostMapping("/add")
+    public ResultVo addGoods(@RequestBody GoodsAddDto goodsAddDto){
+        return goodsService.AddGoods(goodsAddDto);
+    }
+
+    public final String appSecretkey="123";
+
+    @PostMapping("/aaa")
+    public ResultVo aaa(@RequestBody AaaDto aaaDto, @RequestHeader("reqId") Long reqId,@RequestHeader("reqTime") Long reqTime,@RequestHeader("appId") Long appId){
+
+        Long goodsId = aaaDto.getGoodsId();
+
+        TreeMap<String,Object> treeMap=new TreeMap<>();
+        treeMap.put("goodsId",goodsId);
+        treeMap.put("reqId",reqId);
+        treeMap.put("reqTime",reqTime);
+        treeMap.put("appId",appId);
+
+        String sign="";
+        for (Map.Entry<String,Object> m:treeMap.entrySet()){
+            sign+=m.getKey()+"="+m.getValue()+"&";
+        }
+        String substring = sign.substring(0, sign.length() - 1);
+        String encode = Md5Utils.encode(substring + appSecretkey);
+        System.err.println(encode);
+        if (encode.equals(aaaDto.getSign())){
+            return ResultVo.OK("面包","验证成功");
+        }else {
+            return ResultVo.Err(null,"失败");
+        }
+
+
+    }
+
+
+
+
+    @GetMapping("id")
+    public void did(){
+        String s = OrderNumberGenerator.generateOrderNumber();
+        System.err.println(s);
+    }
+
+
+
+}

+ 18 - 0
src/main/java/com/zhentao/dto/AaaDto.java

@@ -0,0 +1,18 @@
+package com.zhentao.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AaaDto {
+
+    private Long goodsId;
+    private String sign;
+
+
+
+
+}

+ 41 - 0
src/main/java/com/zhentao/dto/GoodsAddDto.java

@@ -0,0 +1,41 @@
+package com.zhentao.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GoodsAddDto {
+
+
+    private String goodsName;
+
+    /**
+     *
+     */
+    private String descriptions;
+
+    /**
+     *
+     */
+    private String goodsImg;
+
+    /**
+     *
+     */
+    private String content;
+
+    /**
+     *
+     */
+    private Date createdTime;
+
+
+
+
+
+}

+ 23 - 0
src/main/java/com/zhentao/dto/Kafuka.java

@@ -0,0 +1,23 @@
+package com.zhentao.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.kafka.common.protocol.types.Field;
+
+import javax.print.DocFlavor;
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Kafuka implements Serializable{
+
+
+    private Long msgId;
+    private String msgtype;
+    private String content;
+
+
+
+}

+ 20 - 0
src/main/java/com/zhentao/mapper/GoodsMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.zhentao.pojo.Goods;
+
+/**
+* @author lzy
+* @description 针对表【goods】的数据库操作Mapper
+* @createDate 2025-05-16 09:35:12
+* @Entity pojo.Goods
+*/
+@Mapper
+public interface GoodsMapper extends BaseMapper<Goods> {
+
+}
+
+
+
+

+ 105 - 0
src/main/java/com/zhentao/pojo/Goods.java

@@ -0,0 +1,105 @@
+package com.zhentao.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * @TableName goods
+ */
+@TableName(value ="goods")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Goods implements Serializable {
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 商品名字
+     */
+    private String goodsName;
+
+    /**
+     * 
+     */
+    private String descriptions;
+
+    /**
+     * 
+     */
+    private String goodsImg;
+
+    /**
+     * 
+     */
+    private String content;
+
+    /**
+     * 
+     */
+    private Date createdTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Goods other = (Goods) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getGoodsName() == null ? other.getGoodsName() == null : this.getGoodsName().equals(other.getGoodsName()))
+            && (this.getDescriptions() == null ? other.getDescriptions() == null : this.getDescriptions().equals(other.getDescriptions()))
+            && (this.getGoodsImg() == null ? other.getGoodsImg() == null : this.getGoodsImg().equals(other.getGoodsImg()))
+            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))
+            && (this.getCreatedTime() == null ? other.getCreatedTime() == null : this.getCreatedTime().equals(other.getCreatedTime()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getGoodsName() == null) ? 0 : getGoodsName().hashCode());
+        result = prime * result + ((getDescriptions() == null) ? 0 : getDescriptions().hashCode());
+        result = prime * result + ((getGoodsImg() == null) ? 0 : getGoodsImg().hashCode());
+        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());
+        result = prime * result + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", goodsName=").append(goodsName);
+        sb.append(", descriptions=").append(descriptions);
+        sb.append(", goodsImg=").append(goodsImg);
+        sb.append(", content=").append(content);
+        sb.append(", createdTime=").append(createdTime);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 18 - 0
src/main/java/com/zhentao/service/GoodsService.java

@@ -0,0 +1,18 @@
+package com.zhentao.service;
+
+import com.zhentao.dto.GoodsAddDto;
+import com.zhentao.pojo.Goods;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhentao.vo.ResultVo;
+
+/**
+* @author lzy
+* @description 针对表【goods】的数据库操作Service
+* @createDate 2025-05-16 09:35:12
+*/
+public interface GoodsService extends IService<Goods> {
+
+
+    ResultVo AddGoods(GoodsAddDto goodsAddDto);
+
+}

+ 38 - 0
src/main/java/com/zhentao/service/impl/GoodsServiceImpl.java

@@ -0,0 +1,38 @@
+package com.zhentao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.dto.GoodsAddDto;
+import com.zhentao.pojo.Goods;
+import com.zhentao.service.GoodsService;
+import com.zhentao.mapper.GoodsMapper;
+import com.zhentao.util.SnowflakeIdWorker;
+import com.zhentao.vo.ResultVo;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+* @author lzy
+* @description 针对表【goods】的数据库操作Service实现
+* @createDate 2025-05-16 09:35:12
+*/
+@Service
+public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods>
+    implements GoodsService{
+
+    @Resource
+    private GoodsMapper goodsMapper;
+
+    @Override
+    public ResultVo AddGoods(GoodsAddDto goodsAddDto) {
+        goodsAddDto.setCreatedTime(new Date());
+        SnowflakeIdWorker snowflakeIdWorker=new SnowflakeIdWorker(1,1);
+        int insert = goodsMapper.insert(new Goods(snowflakeIdWorker.nextId(), goodsAddDto.getGoodsName(), goodsAddDto.getDescriptions(), goodsAddDto.getGoodsImg(), goodsAddDto.getContent(), goodsAddDto.getCreatedTime()));
+        return ResultVo.OK(insert,"添加成功");
+    }
+}
+
+
+
+

+ 16 - 0
src/main/java/com/zhentao/service/impl/KafkaListenerServer.java

@@ -0,0 +1,16 @@
+package com.zhentao.service.impl;
+
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.stereotype.Service;
+
+@Service
+public class KafkaListenerServer {
+
+    @KafkaListener(topics = "aaa",groupId = "sms_group")
+    public void listener(String name){
+        System.err.println("消费者信息:"+name);
+    }
+
+
+
+}

+ 35 - 0
src/main/java/com/zhentao/service/impl/KafkaServer.java

@@ -0,0 +1,35 @@
+package com.zhentao.service.impl;
+
+import com.zhentao.dto.Kafuka;
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.kafka.core.KafkaTemplate;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+@EnableScheduling
+@Component
+public class KafkaServer {
+
+    @Resource
+    private KafkaTemplate kafkaTemplate;
+
+
+    @Scheduled(cron = "0 * * * * *")
+    public void Massage(){
+        Kafuka kafuka=new Kafuka(786453L,"84653","97864");
+        kafkaTemplate.send("aaa",kafuka.toString());
+        System.err.println("发送成功");
+    }
+
+
+
+
+
+
+
+}

+ 67 - 0
src/main/java/com/zhentao/util/Md5Utils.java

@@ -0,0 +1,67 @@
+package com.zhentao.util;
+import java.security.MessageDigest;
+import java.util.Random;
+/**
+ * @version 1.0
+ * @Author ZZX
+ * @Date 2022/12/19 17:35
+ */
+public class Md5Utils {
+    /**
+     * md5 加密
+     *
+     * @param saltAndPwd
+     * @return
+     */
+    public static String encode(String saltAndPwd) {
+        try {
+            return
+                    toHex(MessageDigest.getInstance("MD5").digest(saltAndPwd.getBytes("UTF-8"))).toLowerCase();
+        } catch (Exception e) {
+            throw new RuntimeException("md5 加密", e);
+        }
+    }
+    /**
+     * 十六进制字符
+     */
+    private static final char[] HEX_CHARS =
+            "0123456789ABCDEF".toCharArray();
+    /**
+     * 转换为十六进制字符串
+     *
+     * @param bytes
+     * @return
+     */
+    private static String toHex(byte[] bytes) {
+        StringBuilder str = new StringBuilder(bytes.length * 2);
+        final int fifteen = 0x0f;//十六进制中的 15
+        for (byte b : bytes) {//byte 为 32 位
+            str.append(HEX_CHARS[(b >> 4) & fifteen]);//获取第 25 位到第 28 位的二进制数
+            str.append(HEX_CHARS[b & fifteen]);//获取第 29 位到第 32 位的二进制数
+        }
+        return str.toString();
+    }
+    /**
+     * 随机生成10位密码盐
+     * @return
+     */
+    public static String getSalt() {
+        char[] chars =
+                ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +
+                        "1234567890!@#$%^&*()_+").toCharArray();
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < 30; i++) {
+            //Random().nextInt()返回值为[0,n)
+            char aChar = chars[new Random().nextInt(chars.length)];
+            sb.append(aChar);
+        }
+        return sb.toString();
+    }
+    // 测试
+    public static void main(String[] args) {
+        String salt = getSalt();// get the salt
+        String pwd = "123456";// the inital pwd
+        String saltPwd = encode(salt + pwd);//calculate the new-pwd by the salt and the inital pwd
+        System.out.println(saltPwd);// sout to test
+    }
+}

+ 39 - 0
src/main/java/com/zhentao/util/OrderNumberGenerator.java

@@ -0,0 +1,39 @@
+package com.zhentao.util;
+
+import redis.clients.jedis.Jedis;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class OrderNumberGenerator {
+
+    private static final String REDIS_KEY = "order_number_counter";
+    private static final String REDIS_HOST = "localhost";
+    private static final int REDIS_PORT = 6379;
+    private static final DateTimeFormatter DATE_TIME_FORMATTER =
+            DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+
+    /**
+     * 生成格式化订单号(线程安全)
+     * @return 格式如 ORDER2023051514300000001
+     */
+    public static synchronized String generateOrderNumber() {
+        try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {
+            // 生成递增序号(Redis 原子操作)
+            Long nextOrderNumber = jedis.incr(REDIS_KEY);
+
+            // 格式:ORDER + 年月日时分秒 + 7位序号(不足补零)
+            return String.format("%s%07d",
+                    DATE_TIME_FORMATTER.format(LocalDateTime.now()),
+                    nextOrderNumber);
+        }
+    }
+
+    /**
+     * 初始化 Redis 计数器(可选)
+     */
+    public static void initRedisCounter(long initialValue) {
+        try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {
+            jedis.setnx(REDIS_KEY, String.valueOf(initialValue));
+        }
+    }
+}

+ 73 - 0
src/main/java/com/zhentao/util/SnowflakeIdWorker.java

@@ -0,0 +1,73 @@
+package com.zhentao.util;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+public class SnowflakeIdWorker {
+    // 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动)
+    private final long twepoch = 1288834974657L;
+    // 机器标识位数
+    private final long workerIdBits = 5L;
+    // 数据标识位数
+    private final long datacenterIdBits = 5L;
+    // 支持的最大机器标识数
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+    // 支持的最大数据标识数
+    private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
+    // 序列在id中占的位数
+    private final long sequenceBits = 12L;
+    // 机器ID向左移12位
+    private final long workerIdShift = sequenceBits;
+    // 数据标识符向左移17位(12+5)
+    private final long datacenterIdShift = sequenceBits + workerIdBits;
+    // 时间戳向左移22位(5+5+12)
+    private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+    private long workerId;
+    private long datacenterId;
+    private long sequence = 0L;
+    private long lastTimestamp = -1L;
+    private final AtomicLong sequenceGenerator = new AtomicLong(0L);
+
+    public SnowflakeIdWorker(long workerId, long datacenterId) {
+        if (workerId > maxWorkerId || workerId < 0) {
+            throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
+        }
+        if (datacenterId > maxDatacenterId || datacenterId < 0) {
+            throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
+        }
+        this.workerId = workerId;
+        this.datacenterId = datacenterId;
+    }
+
+    public synchronized long nextId() {
+        long timestamp = timeGen();
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1) & sequenceMask;
+            if (sequence == 0) {
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        } else {
+            sequence = 0L;
+        }
+        lastTimestamp = timestamp;
+        return ((timestamp - twepoch) << timestampLeftShift) |
+                (datacenterId << datacenterIdShift) |
+                (workerId << workerIdShift) |
+                sequence;
+    }
+
+    protected long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+}

+ 28 - 0
src/main/java/com/zhentao/vo/ResultVo.java

@@ -0,0 +1,28 @@
+package com.zhentao.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.kafka.common.protocol.types.Field;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResultVo {
+
+        private Integer code;
+        private Object data;
+        private String mgs;
+
+
+        public static ResultVo OK(Object data, String mgs){
+            return new ResultVo(200,data,mgs);
+        }
+
+
+    public static ResultVo Err(Object data, String mgs){
+        return new ResultVo(1002,data,mgs);
+    }
+
+
+}

+ 39 - 0
src/main/resources/application.yml

@@ -0,0 +1,39 @@
+server:
+  port: 8080
+
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://localhost:3306/week2?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
+    username: root
+    password: root
+  web:
+    resources:
+      static-locations: file:///D:/img/
+mybatis-plus:
+  type-aliases-package: cn.zhentao.pojo
+  configuration:
+    map-underscore-to-camel-case: true
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath:mapper/*.xml
+logging:
+  level:
+    cn:
+      zhentao: debug
+  kafka:
+    producer:
+      key-serializer: org.apache.kafka.common.serialization.StringSerializer
+      value-serializer: org.apache.kafka.common.serialization.StringSerializer
+      batch-size: 16384
+      buffer-memory: 33554432
+      retries: 3
+      linger: 1
+    bootstrap-servers: localhost:9092
+    consumer:
+      group-id: sms_group
+      auto-offset-reset: latest #latest
+      enable-auto-commit: false
+      auto-commit-interval: 100
+      max-poll-records: 500
+      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

+ 20 - 0
src/main/resources/mapper/GoodsMapper.xml

@@ -0,0 +1,20 @@
+<?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.zhentao.mapper.GoodsMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhentao.pojo.Goods">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="goodsName" column="goods_name" jdbcType="VARCHAR"/>
+            <result property="descriptions" column="descriptions" jdbcType="VARCHAR"/>
+            <result property="goodsImg" column="goods_img" jdbcType="VARCHAR"/>
+            <result property="content" column="content" jdbcType="VARCHAR"/>
+            <result property="createdTime" column="created_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,goods_name,descriptions,
+        goods_img,content,created_time
+    </sql>
+</mapper>

+ 13 - 0
src/test/java/com/zhentao/LiziyangsaleApplicationTests.java

@@ -0,0 +1,13 @@
+package com.zhentao;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class LiziyangsaleApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}