commit 292f15d3ee9818cd5a6ded9e502149f2709d1066 Author: liangjinglin Date: Tue Mar 11 21:34:37 2025 +0800 20250311 一个简单的下单流程 diff --git a/liang-springcloud-alibaba-goods-service/pom.xml b/liang-springcloud-alibaba-goods-service/pom.xml new file mode 100644 index 0000000..6a45761 --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + + org.example + liang-springcloud-alibaba-service + 1.0-SNAPSHOT + + liang-springcloud-alibaba-goods-service + Archetype - liang-springcloud-alibaba-goods-service + http://maven.apache.org + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + cn.hutool + hutool-all + 5.8.0 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.4.2 + + + + + mysql + mysql-connector-java + 8.0.33 + + + diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/LiangSpringcloudAlibabaGoodsApplication.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/LiangSpringcloudAlibabaGoodsApplication.java new file mode 100644 index 0000000..6b24635 --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/LiangSpringcloudAlibabaGoodsApplication.java @@ -0,0 +1,12 @@ +package com.liang.sca.goods; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LiangSpringcloudAlibabaGoodsApplication { + + public static void main(String[] args) { + SpringApplication.run(LiangSpringcloudAlibabaGoodsApplication.class, args); + } +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/GoodsController.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/GoodsController.java new file mode 100644 index 0000000..966ba1a --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/GoodsController.java @@ -0,0 +1,59 @@ +package com.liang.sca.goods.controller; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.liang.sca.goods.mapper.GoodsInfoMapper; +import com.liang.sca.goods.model.GoodsInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigInteger; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@RestController +@RequestMapping("/goods") +public class GoodsController { + + @Value("${spring.application.name}:${server.port}") + String info; + + @Autowired + private GoodsInfoMapper goodsInfoMapper; + + @RequestMapping("/demo") + public String demo(){ + return "this is : " + info; + } + + @RequestMapping("/snowflake") + public String snowflake(){ + Snowflake snowflake = IdUtil.getSnowflake(); + return snowflake.nextIdStr(); + } + + @RequestMapping("/infos") + public List> queryInfos(){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("c_goods_name", "星见雅"); + List> results = goodsInfoMapper.selectMaps(queryWrapper); + return results; + } + + @RequestMapping("/buy/{goodsId}/{counts}") + public void buyGodds(@PathVariable BigInteger goodsId, @PathVariable int counts){ + GoodsInfo goodsInfo = goodsInfoMapper.selectById(goodsId); + int nowStore = goodsInfo.getGoodsStore() - counts; + goodsInfo.setGoodsStore(nowStore); + goodsInfoMapper.updateById(goodsInfo); + } + + +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/mapper/GoodsInfoMapper.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/mapper/GoodsInfoMapper.java new file mode 100644 index 0000000..dd7684e --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/mapper/GoodsInfoMapper.java @@ -0,0 +1,9 @@ +package com.liang.sca.goods.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.liang.sca.goods.model.GoodsInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface GoodsInfoMapper extends BaseMapper { +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/model/GoodsInfo.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/model/GoodsInfo.java new file mode 100644 index 0000000..d8b54d5 --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/model/GoodsInfo.java @@ -0,0 +1,58 @@ +package com.liang.sca.goods.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.math.BigInteger; + +@TableName("tb_goods_info") +public class GoodsInfo implements Serializable { + + @TableId("n_goods_id") + private BigInteger goodsId; + + @TableField("c_goods_name") + private String goodsName; + + @TableField("c_goods_price") + private BigDecimal goodsPrice; + + @TableField("n_goods_store") + private Integer goodsStore; + + public Integer getGoodsStore() { + return goodsStore; + } + + public void setGoodsStore(Integer goodsStore) { + this.goodsStore = goodsStore; + } + + public BigInteger getGoodsId() { + return goodsId; + } + + public void setGoodsId(BigInteger goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public BigDecimal getGoodsPrice() { + return goodsPrice; + } + + public void setGoodsPrice(BigDecimal goodsPrice) { + this.goodsPrice = goodsPrice; + } + +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml b/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml new file mode 100644 index 0000000..85022df --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml @@ -0,0 +1,17 @@ +server: + port: 7002 +spring: + application: + name: goods-service + cloud: + nacos: + discovery: + server-addr: http://154.12.80.119:8848 #配置Nacos地址 + datasource: + url: jdbc:mysql://154.12.80.119:33061/goods_db + username: root + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + jackson: + serialization: + FAIL_ON_EMPTY_BEANS: false \ No newline at end of file diff --git a/liang-springcloud-alibaba-order-service/pom.xml b/liang-springcloud-alibaba-order-service/pom.xml new file mode 100644 index 0000000..5d9c7dc --- /dev/null +++ b/liang-springcloud-alibaba-order-service/pom.xml @@ -0,0 +1,63 @@ + + 4.0.0 + + org.example + liang-springcloud-alibaba-service + 1.0-SNAPSHOT + + liang-springcloud-alibaba-order-service + Archetype - liang-springcloud-alibaba-order-service + http://maven.apache.org + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-actuator + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + cn.hutool + hutool-all + 5.8.0 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.4.2 + + + + + mysql + mysql-connector-java + 8.0.33 + + + + org.projectlombok + lombok + 1.18.36 + + + diff --git a/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/LiangSpringcloudAlibabaOrderApplication.java b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/LiangSpringcloudAlibabaOrderApplication.java new file mode 100644 index 0000000..d53eec2 --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/LiangSpringcloudAlibabaOrderApplication.java @@ -0,0 +1,14 @@ +package com.liang.sca.order; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableFeignClients +@SpringBootApplication +public class LiangSpringcloudAlibabaOrderApplication { + + public static void main(String[] args) { + SpringApplication.run(LiangSpringcloudAlibabaOrderApplication.class, args); + } +} diff --git a/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/controller/OrderInfoController.java b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/controller/OrderInfoController.java new file mode 100644 index 0000000..2f30250 --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/controller/OrderInfoController.java @@ -0,0 +1,41 @@ +package com.liang.sca.order.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.liang.sca.order.mapper.OrderInfoMapper; +import com.liang.sca.order.model.OrderInfo; +import com.liang.sca.order.service.GoodsInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigInteger; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/order") +public class OrderInfoController { + + @Autowired + private OrderInfoMapper orderInfoMapper; + + @Autowired + private GoodsInfoService goodsInfoService; + + @RequestMapping("/buy/{counts}") + public String buyGoods(@PathVariable int counts){ + List> maps = goodsInfoService.queryGoodsInfo(); + if(CollectionUtil.isNotEmpty(maps)){ + Map goodsInfo = maps.get(0); + BigInteger goodsId = BigInteger.valueOf((long)goodsInfo.get("goodsId")); + String goodsName = goodsInfo.get("goodsName").toString(); + OrderInfo orderInfo = new OrderInfo(); + goodsInfoService.buyGoods(goodsId, counts); + return "商品:"+goodsName+",下单数量:"+counts+"件下单成功"; + } else { + return "没找到商品"; + } + } +} diff --git a/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/mapper/OrderInfoMapper.java b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/mapper/OrderInfoMapper.java new file mode 100644 index 0000000..bd0d246 --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/mapper/OrderInfoMapper.java @@ -0,0 +1,9 @@ +package com.liang.sca.order.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.liang.sca.order.model.OrderInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OrderInfoMapper extends BaseMapper { +} diff --git a/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/model/OrderInfo.java b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/model/OrderInfo.java new file mode 100644 index 0000000..516d9d8 --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/model/OrderInfo.java @@ -0,0 +1,30 @@ +package com.liang.sca.order.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.math.BigInteger; + +@Data +@TableName("tb_order_info") +public class OrderInfo { + + @TableId("n_order_id") + private BigInteger orderId; + @TableField("c_clnt_name") + private String clntName; + @TableField("c_good_id") + private String goodId; + @TableField("n_buy_nums") + private Integer buyNums; + @TableField("n_price") + private BigDecimal price; + @TableField("c_pay_status") + private String payStatus; + @TableField("n_actul_pay") + private BigDecimal actulPay; + +} diff --git a/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/service/GoodsInfoService.java b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/service/GoodsInfoService.java new file mode 100644 index 0000000..b7af11c --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/java/com/liang/sca/order/service/GoodsInfoService.java @@ -0,0 +1,20 @@ +package com.liang.sca.order.service; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.math.BigInteger; +import java.util.List; +import java.util.Map; + +@FeignClient("goods-service") +public interface GoodsInfoService { + + @GetMapping("/goods/infos") + List> queryGoodsInfo(); + + @GetMapping("/goods/buy/{goodsId}/{counts}") + void buyGoods(@PathVariable BigInteger goodsId, @PathVariable int counts); +} diff --git a/liang-springcloud-alibaba-order-service/src/main/resources/application.yml b/liang-springcloud-alibaba-order-service/src/main/resources/application.yml new file mode 100644 index 0000000..87f48bd --- /dev/null +++ b/liang-springcloud-alibaba-order-service/src/main/resources/application.yml @@ -0,0 +1,14 @@ +server: + port: 7003 +spring: + application: + name: order-service + cloud: + nacos: + discovery: + server-addr: http://154.12.80.119:8848 #配置Nacos地址 + datasource: + url: jdbc:mysql://154.12.80.119:33061/order_db + username: root + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bb9742a --- /dev/null +++ b/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.4.6 + + + org.example + liang-springcloud-alibaba-service + 1.0-SNAPSHOT + Archetype - liang-springcloud-alibaba-service + + liang-springcloud-alibaba-goods-service + liang-springcloud-alibaba-order-service + + pom + + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2021.1 + pom + import + + + + org.springframework.cloud + spring-cloud-dependencies + 2020.0.3 + pom + import + + + + + + +