|
@@ -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("没有待使用的优惠卷");
|
|
|
+ }
|
|
|
}
|
|
|
}
|