zhentao 1 month ago
commit
cbdb8f1f14

+ 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>wangyongchun-sale</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>wangyongchun-sale</name>
+    <description>wangyongchun-sale</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.6.13</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.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.11</version> <!-- 确保版本号是正确的 -->
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.kafka</groupId>
+            <artifactId>spring-kafka</artifactId>
+            <version>2.8.0</version> <!-- 使用适合你项目的版本 -->
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </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.WangyongchunSaleApplication</mainClass>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 15 - 0
src/main/java/com/zhentao/WangyongchunSaleApplication.java

@@ -0,0 +1,15 @@
+package com.zhentao;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.zhentao.mapper")
+public class WangyongchunSaleApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(WangyongchunSaleApplication.class, args);
+    }
+
+}

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

@@ -0,0 +1,47 @@
+package com.zhentao.controller;
+
+import com.zhentao.dto.GoodDto;
+import com.zhentao.dto.GoodsDto;
+import com.zhentao.dto.Goods_Dto;
+import com.zhentao.service.GoodsService;
+import com.zhentao.util.OrderNumberGenerator;
+import com.zhentao.util.Verituls;
+import com.zhentao.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("goods")
+public class GoodsController {
+    @Autowired
+    private GoodsService service;
+//    添加商品
+    @PostMapping("add")
+    public ResultVo add(@RequestBody GoodDto goodDto){
+        ResultVo add = service.add(goodDto);
+        return add;
+    }
+    @PostMapping("orderadd")
+    public ResultVo orderAdd(@RequestBody GoodsDto goodsDto, @RequestHeader("appId")String appId,@RequestHeader("reqId")String reqId){
+        Goods_Dto goods_dto = new Goods_Dto();
+        goods_dto.setAppId(appId);
+        goods_dto.setReqId(reqId);
+        goods_dto.setGoodsId(goodsDto.getGoodsId());
+        goods_dto.setSign(goodsDto.getSign());
+        goods_dto.setReqTime(goodsDto.getReqTime());
+        goods_dto.setAppSecretKey("123");
+        Boolean aBoolean = Verituls.VeriUtils(goods_dto);
+        if (aBoolean){
+            return ResultVo.OK(200,"签名成功",aBoolean);
+        }else {
+            return ResultVo.ERR(1002,"签名失败",aBoolean);
+        }
+    }
+//生成一个格式化订单号(用redis)格式为YYYYMMDDHHMMSS00001或YYYYMMDDHHMMSS123之类的
+    @GetMapping("order")
+    public String Order(){
+        String s = OrderNumberGenerator.generateOrderNumber();
+        System.err.println(s);
+        return s;
+    }
+}

+ 46 - 0
src/main/java/com/zhentao/domain/Goods.java

@@ -0,0 +1,46 @@
+package com.zhentao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+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.Data;
+
+/**
+ * 
+ * @TableName goods
+ */
+@TableName(value ="goods")
+@Data
+public class Goods implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String goodsName;
+
+    /**
+     * 
+     */
+    private String descriptions;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 13 - 0
src/main/java/com/zhentao/dto/GoodDto.java

@@ -0,0 +1,13 @@
+package com.zhentao.dto;
+
+import lombok.Data;
+
+@Data
+public class GoodDto {
+    private String goodsName;
+
+    private String descriptions;
+
+    private String content;
+
+}

+ 12 - 0
src/main/java/com/zhentao/dto/GoodsDto.java

@@ -0,0 +1,12 @@
+package com.zhentao.dto;
+
+import lombok.Data;
+
+@Data
+public class GoodsDto {
+    private Long reqTime;
+    private String pageNo;
+    private String pageSize;
+    private String goodsId;
+    private String sign;
+}

+ 13 - 0
src/main/java/com/zhentao/dto/Goods_Dto.java

@@ -0,0 +1,13 @@
+package com.zhentao.dto;
+
+import lombok.Data;
+
+@Data
+public class Goods_Dto {
+    private String appId;
+    private String reqId;
+    private Long reqTime;
+    private String goodsId;
+    private String sign;
+    private String appSecretKey;
+}

+ 10 - 0
src/main/java/com/zhentao/dto/KafkaDto.java

@@ -0,0 +1,10 @@
+package com.zhentao.dto;
+
+import lombok.Data;
+
+@Data
+public class KafkaDto {
+    private String msgId;
+    private String msgtype;
+    private String content;
+}

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

@@ -0,0 +1,18 @@
+package com.zhentao.mapper;
+
+import com.zhentao.domain.Goods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 86183
+* @description 针对表【goods】的数据库操作Mapper
+* @createDate 2025-05-16 09:45:37
+* @Entity com.zhentao.domain.Goods
+*/
+public interface GoodsMapper extends BaseMapper<Goods> {
+
+}
+
+
+
+

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

@@ -0,0 +1,16 @@
+package com.zhentao.service;
+
+import com.zhentao.domain.Goods;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhentao.dto.GoodDto;
+import com.zhentao.dto.GoodsDto;
+import com.zhentao.vo.ResultVo;
+
+/**
+* @author 86183
+* @description 针对表【goods】的数据库操作Service
+* @createDate 2025-05-16 09:45:38
+*/
+public interface GoodsService extends IService<Goods> {
+    ResultVo add(GoodDto goodDto);
+}

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

@@ -0,0 +1,44 @@
+package com.zhentao.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.domain.Goods;
+import com.zhentao.dto.GoodDto;
+import com.zhentao.dto.GoodsDto;
+import com.zhentao.service.GoodsService;
+import com.zhentao.mapper.GoodsMapper;
+import com.zhentao.vo.ResultVo;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+* @author 86183
+* @description 针对表【goods】的数据库操作Service实现
+* @createDate 2025-05-16 09:45:37
+*/
+@Service
+public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods>
+    implements GoodsService{
+
+    @Override
+    public ResultVo add(GoodDto goodDto) {
+        Goods goods = new Goods();
+        long l = IdUtil.getSnowflake(1, 1).nextId();
+        goods.setId(l);
+        goods.setGoodsName(goodDto.getGoodsName());
+        goods.setContent(goodDto.getContent());
+        goods.setDescriptions(goodDto.getDescriptions());
+        goods.setCreateTime(new Date());
+        boolean save = this.save(goods);
+        if (save){
+            return ResultVo.OK(200,"添加成功",save);
+        }else {
+            return ResultVo.ERR(400,"添加失败",save);
+        }
+    }
+}
+
+
+
+

+ 33 - 0
src/main/java/com/zhentao/task/KafkaScheduling.java

@@ -0,0 +1,33 @@
+package com.zhentao.task;
+
+import cn.hutool.core.util.IdUtil;
+import com.zhentao.dto.KafkaDto;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@EnableScheduling
+@Component
+@Slf4j
+public class KafkaScheduling {
+    @Autowired
+    private KafkaTemplate<String,String> kafkaTemplate;
+    @Scheduled(cron = "* 0/1 * * * *")
+    public void test(){
+        KafkaDto kafkaDto = new KafkaDto();
+        long l = IdUtil.getSnowflake(1, 1).nextId();
+        kafkaDto.setMsgId(l+"");
+        kafkaDto.setMsgtype("topic");
+        kafkaDto.setContent("你今天吃早饭了吗?");
+        kafkaTemplate.send("topic",kafkaDto.toString());
+    }
+
+    @KafkaListener(topics = "topic",groupId = "sms_group")
+    public void test1(String name){
+        System.err.println("消费成功"+name);
+    }
+}

+ 244 - 0
src/main/java/com/zhentao/util/EraHelper.java

@@ -0,0 +1,244 @@
+package com.zhentao.util;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+
+/**
+ * 项目相关帮助函数。
+ *
+ *
+ */
+public class EraHelper {
+
+
+
+	/**
+	 * 生产新的UUID。
+	 *
+	 * @return uuid
+	 */
+	public static final String newUUID() {
+		return UUID.randomUUID().toString().replaceAll("-", "");
+	}
+
+	/**
+	 * 判断银行卡号是否合法。
+	 *
+	 * @param cardNumber
+	 *            银行卡号
+	 * @return boolean 表示合法
+	 */
+	public static final boolean isBankCard(String cardNumber) {
+		if (cardNumber == null || cardNumber.isEmpty() || cardNumber.length() <= 2) {
+			return false;
+		}
+		char[] chs = cardNumber.trim().toCharArray();
+		int luhmSum = 0;
+		for (int i = chs.length - 2, j = 0; i >= 0; i--, j++) {
+			if (!Character.isDigit(chs[i])) {
+				return false;
+			}
+			int k = chs[i] - '0';
+			if (j % 2 == 0) {
+				k *= 2;
+				k = k / 10 + k % 10;
+			}
+			luhmSum += k;
+		}
+		return ((luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0')) == chs[chs.length - 1];
+	}
+
+	/**
+	 * 获取远程请求IP
+	 *
+	 * @param request
+	 *            HTTP请求
+	 * @return String ip
+	 */
+	public static String getRemoteIP(HttpServletRequest request) {
+		String xff = request.getHeader("X-Forwarded-For");
+		if (xff != null && !xff.isEmpty()) {
+			return xff.split(", ?")[0];
+		} else {
+			return request.getRemoteAddr();
+		}
+	}
+
+	/**
+	 * 判断手机号是否合法。
+	 *
+	 * @param mobile
+	 *            手机号码
+	 * @return boolean 表示合法
+	 */
+	public static boolean isMobile(String mobile) {
+		if (mobile == null || mobile.length() != 11) {
+			return false;
+		}
+		int index = 0;
+		for (char ch : mobile.toCharArray()) {
+			if (index == 0 && ch != '1') {
+				return false;
+			}
+			if (!Character.isDigit(ch)) {
+				return false;
+			}
+			index++;
+		}
+		return true;
+	}
+
+	/**
+	 * 手机号打码
+	 *
+	 * @param mobile
+	 *            手机号码
+	 * @return String 打码后的手机号码
+	 */
+	public static String maskMobile(String mobile) {
+		StringBuilder builder = new StringBuilder();
+		builder.append(mobile, 0, 3);
+		builder.append("****").append(mobile.substring(7));
+		return builder.toString();
+	}
+
+	/**
+	 * 银行卡号打码
+	 *
+	 * @param cardNumber
+	 *            银行卡号
+	 * @return String 打码后的银行卡号
+	 */
+	public static String maskBankCard(String cardNumber) {
+		StringBuilder builder = new StringBuilder();
+		if (cardNumber.length() > 8) {
+			builder.append(cardNumber, 0, 4);
+			builder.append(" **** ").append(" **** ").append(cardNumber.substring(cardNumber.length() - 4));
+		}
+		return builder.toString();
+	}
+
+	/**
+	 * 判断短信验证码是否合法。
+	 *
+	 * @param verifyCode
+	 *            短信验证码
+	 * @return boolean 表示合法
+	 */
+	public static boolean isSMSCode(String verifyCode) {
+		if (verifyCode == null || verifyCode.length() != 4) {
+			return false;
+		}
+		for (char ch : verifyCode.toCharArray()) {
+			if (!Character.isDigit(ch)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * 转换为十六进制字符串
+	 *
+	 * @param b
+	 *            字节数组
+	 * @return String 十六进制字符串
+	 */
+	public static String byte2HexStr(byte[] b) {
+		StringBuilder sb = new StringBuilder("");
+		for (int n = 0; n < b.length; n++) {
+			String stmp = Integer.toHexString(b[n] & 0xFF);
+			sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
+		}
+		return sb.toString().toUpperCase().trim();
+	}
+
+
+
+	/**
+	 * 密码等资料混淆摘要
+	 *
+	 * @param content
+	 *            待混淆内容
+	 * @return String
+	 */
+	public static String confuse(String content) {
+		if (content == null || content.isEmpty()) {
+			return null;
+		}
+		try {
+			MessageDigest md5 = MessageDigest.getInstance("MD5");
+			md5.update(content.getBytes("UTF-8"));
+			MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
+			return byte2HexStr(sha256.digest(md5.digest()));
+		} catch (Throwable e) {
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+
+
+
+	private static double EARTH_RADIUS = 6378.137;// 地球半径
+
+	private static double rad(double d) {
+		return d * Math.PI / 180.0;
+	}
+
+	/**
+	 * 计算两个经纬度坐标距离.
+	 *
+	 * @param lat1
+	 * @param lng1
+	 * @param lat2
+	 * @param lng2
+	 * @return double
+	 */
+	public static BigDecimal getDistance(double lat1, double lng1, double lat2, double lng2) {
+		double radLat1 = rad(lat1);
+		double radLat2 = rad(lat2);
+		double a = radLat1 - radLat2;
+		double b = rad(lng1) - rad(lng2);
+		double s = 2 * Math.asin(Math.sqrt(
+				Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+		s = s * EARTH_RADIUS;
+		return BigDecimal.valueOf(s).setScale(2, BigDecimal.ROUND_HALF_UP);
+	}
+
+	/**
+	 * 判断是否为微信。
+	 *
+	 * @param userAgent
+	 *            终端类型字符串
+	 * @return boolean true表示终端类型为微信
+	 */
+	public static boolean isWeiXin(String userAgent) {
+		return userAgent == null || userAgent.isEmpty() ? false : userAgent.indexOf("MicroMessenger") != -1;
+	}
+
+	/**
+	 * 判断是否为安卓。
+	 *
+	 * @param userAgent
+	 *            终端类型字符串
+	 * @return boolean true表示终端类型为安卓
+	 */
+	public static boolean isAndroid(String userAgent) {
+		return userAgent == null || userAgent.isEmpty() ? false : userAgent.indexOf("Android") != -1;
+	}
+
+	/**
+	 * 判断是否为iPhone。
+	 *
+	 * @param userAgent
+	 *            终端类型字符串
+	 * @return boolean true表示终端类型为iPhone
+	 */
+	public static boolean isIPhone(String userAgent) {
+		return userAgent == null || userAgent.isEmpty() ? false : userAgent.indexOf("iPhone") != -1;
+	}
+}

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

@@ -0,0 +1,30 @@
+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";
+    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 格式化订单号
+     */
+    public static synchronized String generateOrderNumber() {
+        // 连接Redis
+        try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {
+            // 使用Redis的原子操作生成订单号
+            Long nextOrderNumber = jedis.incr(REDIS_KEY);
+            // 格式化订单号,例如:ORDER2023051512340001
+            String orderNumber = String.format("ORDER%s%07d",
+                    DATE_TIME_FORMATTER.format(LocalDateTime.now()),
+                    nextOrderNumber);
+            return orderNumber;
+        }
+    }
+}

+ 41 - 0
src/main/java/com/zhentao/util/Verituls.java

@@ -0,0 +1,41 @@
+package com.zhentao.util;
+
+import com.zhentao.dto.Goods_Dto;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class Verituls {
+    public static Boolean VeriUtils(Goods_Dto goods_dto){
+        Map<String,String> map = new TreeMap<>();
+        map.put("appId",goods_dto.getAppId());
+        map.put("reqId",goods_dto.getReqId());
+        map.put("reqTime",goods_dto.getReqTime().toString());
+        map.put("goodsId",goods_dto.getGoodsId());
+        StringBuilder stringBuilder = new StringBuilder();
+        Boolean bool = true;
+        for (Map.Entry<String,String> m:map.entrySet()) {
+            if (bool){
+                stringBuilder.append(m.getKey()).append("=").append(m.getValue()).append("&");
+                bool=false;
+            }else {
+                stringBuilder.append("&").append(m.getKey()).append("=").append(m.getValue());
+            }
+        }
+        stringBuilder.append(goods_dto.getAppSecretKey());
+        System.err.println(stringBuilder);
+        try {
+            String md5 = EraHelper.byte2HexStr(MessageDigest.getInstance("MD5").digest(stringBuilder.toString().getBytes("UTF-8")));
+            return md5.equals(goods_dto.getSign());
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException(e);
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
+//        String s = DigestUtil.md5Hex(String.valueOf(stringBuilder));
+
+    }
+}

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

@@ -0,0 +1,24 @@
+package com.zhentao.vo;
+
+import lombok.Data;
+
+@Data
+public class ResultVo {
+    private Integer code;
+    private String msg;
+    private Object object;
+    public static ResultVo OK(Integer code,String msg,Object object){
+        ResultVo resultVo = new ResultVo();
+        resultVo.setCode(code);
+        resultVo.setMsg(msg);
+        resultVo.setObject(object);
+        return resultVo;
+    }
+    public static ResultVo ERR(Integer code,String msg,Object object){
+        ResultVo resultVo = new ResultVo();
+        resultVo.setCode(code);
+        resultVo.setMsg(msg);
+        resultVo.setObject(object);
+        return resultVo;
+    }
+}

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

@@ -0,0 +1,25 @@
+server:
+  port: 9500
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://localhost:3306/wycdier?useSSL=false&serverTimezone=UTC
+    username: root
+    password: root
+  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: true
+      auto-commit-interval: 100
+      max-poll-records: 500
+      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

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

@@ -0,0 +1,19 @@
+<?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.domain.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="content" column="content" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,goods_name,descriptions,
+        content,create_time
+    </sql>
+</mapper>

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

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