Bladeren bron

test_guolina

36052 1 week geleden
bovenliggende
commit
5698b3370f

+ 130 - 4
src/main/java/com/zhentao/controller/UserController.java

@@ -1,10 +1,28 @@
 package com.zhentao.controller;
 
-import com.zhentao.service.UserLoginService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.zhentao.config.SnowflakeUtil;
+import com.zhentao.config.enums.ApiServiceExceptionEnum;
+import com.zhentao.config.token.TokenUtils;
+import com.zhentao.config.vo.ResultVo;
+import com.zhentao.pojo.*;
+import com.zhentao.pojo.dto.CouponDto;
+import com.zhentao.pojo.dto.OrdersDto;
+import com.zhentao.pojo.dto.SkuDto;
+import com.zhentao.pojo.dto.UserDto;
+import com.zhentao.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.apache.ibatis.ognl.DynamicSubscript.all;
+
 /**
  * @Date 2025/5/10 10:14
  * @Author gln
@@ -14,8 +32,116 @@ import org.springframework.web.bind.annotation.RestController;
 public class UserController {
     @Autowired
     private UserLoginService userLoginService;
-    @RequestMapping("test")
-    public String test(){
-        return "dddd";
+    @Autowired
+    private CouponService couponService;
+    @Autowired
+    private UserCouponService userCouponService;
+    @Autowired
+    private OrderInfoService orderInfoService;
+    @Autowired
+    private OrderItemService orderItemService;
+    @Autowired
+    private SkuService skuService;
+    @Autowired
+    private RedisTemplate redisTemplate;
+    @RequestMapping("login")
+    public ResultVo login(@RequestBody UserDto userDto){
+        if (userDto.getUsername()==null||userDto.getUsername()==""){
+            return ResultVo.error(ApiServiceExceptionEnum.PARAM_ERROR);
+        }
+        QueryWrapper<UserLogin> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UserLogin::getUsername,userDto.getUsername());
+        UserLogin one = userLoginService.getOne(wrapper);
+        if (one==null){
+            UserLogin userLogin = new UserLogin();
+            userLogin.setUid(String.valueOf(SnowflakeUtil.nextId()));
+            userLogin.setUsername(userDto.getUsername());
+            userLogin.setPassword(userDto.getPassword());
+            userLoginService.save(userLogin);
+            String jwtToken = TokenUtils.createJwtToken(userLogin.getUid());
+            redisTemplate.opsForValue().set("token",jwtToken);
+            return ResultVo.success(ApiServiceExceptionEnum.REG_SUCCESS,jwtToken);
+        }else {
+            if (userDto.getPassword().equals(one.getPassword())){
+                String jwtToken = TokenUtils.createJwtToken(one.getUid());
+                redisTemplate.opsForValue().set("token",jwtToken);
+                return ResultVo.success(ApiServiceExceptionEnum.Login_SUCCESS,jwtToken);
+            }else {
+                return ResultVo.error(ApiServiceExceptionEnum.PASSWORD_ERROR);
+            }
+        }
+    }
+    @RequestMapping("addCoupon")
+    public ResultVo addCoupon(@RequestBody CouponDto couponDto){
+        Coupon coupon = new Coupon();
+        coupon.setCid(String.valueOf(SnowflakeUtil.nextId()));
+        coupon.setCouponName(couponDto.getCouponName());
+        coupon.setCouponLimit(couponDto.getCouponLimit());
+        coupon.setCouponMianzhi(couponDto.getCouponMianzhi());
+        couponService.save(coupon);
+        Object token = redisTemplate.opsForValue().get("token");
+        String id = TokenUtils.parseJWT((String) token).getId();
+        UserCoupon userCoupon = new UserCoupon();
+        userCoupon.setUcid(String.valueOf(SnowflakeUtil.nextId()));
+        userCoupon.setUid(id);
+        userCoupon.setCid(coupon.getCid());
+        userCouponService.save(userCoupon);
+        return ResultVo.success("优惠卷添加成功");
+    }
+    @RequestMapping("addOrders")
+    public ResultVo addOrders(@RequestBody OrdersDto ordersDto){
+        Object token = redisTemplate.opsForValue().get("token");
+        String id = TokenUtils.parseJWT((String) token).getId();
+        OrderInfo orderInfo = new OrderInfo();
+        orderInfo.setOid(String.valueOf(SnowflakeUtil.nextId()));
+        orderInfo.setUid(id);
+        orderInfoService.save(orderInfo);
+        List<BigDecimal> list = new ArrayList<>();
+        for (SkuDto skuDto:ordersDto.getSkuDtos()) {
+            Sku sku = skuService.getById(skuDto.getSkuid());
+            OrderItem orderItem = new OrderItem();
+            orderItem.setIid(String.valueOf(SnowflakeUtil.nextId()));
+            orderItem.setUid(id);
+            orderItem.setSkuid(sku.getSkuid());
+            orderItem.setNum(skuDto.getNum());
+            orderItem.setSkuprice(sku.getSkuprice());
+            orderItem.setIprice(sku.getSkuprice().multiply(new BigDecimal(skuDto.getNum())));
+            orderItemService.save(orderItem);
+            list.add(orderItem.getIprice());
+        }
+        BigDecimal all = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+//        BigDecimal all = BigDecimal.valueOf(0);
+//        for (int i = 0; i < list.size(); i++) {
+//            all.add(list.get(i));
+//            System.out.println(all);
+//        }
+        System.err.println(all);
+        OrderInfo orderInfo1 = orderInfoService.getById(orderInfo.getOid());
+        orderInfo1.setTotal(all);
+        QueryWrapper<UserCoupon> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UserCoupon::getUid,orderInfo.getUid());
+        UserCoupon userCoupon = userCouponService.getOne(wrapper);
+        if (userCoupon!=null){
+            Coupon coupon = couponService.getById(userCoupon.getCid());
+            if (all.compareTo(coupon.getCouponLimit())>0){
+                orderInfo1.setPaymoney(all.subtract(coupon.getCouponMianzhi()));
+                orderInfo1.setCouponmoney(coupon.getCouponMianzhi());
+                orderInfo1.setCid(coupon.getCid());
+                orderInfoService.updateById(orderInfo1);
+                return ResultVo.success("优惠卷使用成功");
+            }else {
+                orderInfo1.setPaymoney(all);
+                orderInfo1.setCouponmoney(new BigDecimal(0));
+                orderInfo1.setCid(null);
+                orderInfoService.updateById(orderInfo1);
+                return ResultVo.success("优惠卷使用失败--未达到使用条件");
+            }
+        }else {
+            orderInfo1.setPaymoney(all);
+            orderInfo1.setCouponmoney(new BigDecimal(0));
+            orderInfo1.setCid(null);
+            orderInfoService.updateById(orderInfo1);
+            return ResultVo.success("没有待使用的优惠卷");
+        }
     }
 }

+ 27 - 0
src/main/java/com/zhentao/pojo/dto/CouponDto.java

@@ -0,0 +1,27 @@
+package com.zhentao.pojo.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Date 2025/5/10 10:33
+ * @Author gln
+ **/
+@Data
+public class CouponDto {
+    /**
+     * 优惠卷名称
+     */
+    private String couponName;
+
+    /**
+     * 优惠卷限制
+     */
+    private BigDecimal couponLimit;
+
+    /**
+     * 优惠卷面值
+     */
+    private BigDecimal couponMianzhi;
+}

+ 14 - 0
src/main/java/com/zhentao/pojo/dto/OrdersDto.java

@@ -0,0 +1,14 @@
+package com.zhentao.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Date 2025/5/10 10:33
+ * @Author gln
+ **/
+@Data
+public class OrdersDto {
+    private List<SkuDto> skuDtos;
+}

+ 22 - 0
src/main/java/com/zhentao/pojo/dto/SkuDto.java

@@ -0,0 +1,22 @@
+package com.zhentao.pojo.dto;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Date 2025/5/10 10:33
+ * @Author gln
+ **/
+@Data
+public class SkuDto {
+    /**
+     * 商品id
+     */
+    private String skuid;
+    /**
+     * 商品数量
+     */
+    private Integer num;
+}

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

@@ -0,0 +1,13 @@
+package com.zhentao.pojo.dto;
+
+import lombok.Data;
+
+/**
+ * @Date 2025/5/10 10:33
+ * @Author gln
+ **/
+@Data
+public class UserDto {
+    private String username;
+    private String password;
+}

+ 1 - 1
src/main/resources/application.yml

@@ -1,6 +1,6 @@
 #端口号
 server:
-  port: 7001
+  port: 7002
   #  redis
 #  redis:
 #    host: 127.0.0.1