Prechádzať zdrojové kódy

下订单/团长分销

licailing 5 rokov pred
rodič
commit
e621aeb312

+ 3 - 0
src/main/java/com/izouma/jiashanxia/domain/Attractions.java

@@ -37,4 +37,7 @@ public class Attractions extends BaseEntity {
     @Convert(converter = StringArrayConverter.class)
     @Column(columnDefinition = "TEXT")
     private List<String> img;
+
+    @ApiModelProperty(value = "品牌")
+    private boolean brand;
 }

+ 2 - 2
src/main/java/com/izouma/jiashanxia/domain/Coupon.java

@@ -13,9 +13,9 @@ import java.math.BigDecimal;
 @Builder
 @ApiModel("优惠券")
 public class Coupon extends BaseEntity {
-    private String name;
+    private String attractionsId;
 
-    private String brand;
+    private String name;
 
     private BigDecimal price;
 

+ 18 - 14
src/main/java/com/izouma/jiashanxia/domain/OrderInfo.java

@@ -16,6 +16,7 @@ import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 @Data
@@ -56,12 +57,6 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "充值套餐")
     private Long packageId;
 
-//    @ApiModelProperty(value = "规格")
-//    private String specification;
-
-//    @ApiModelProperty(value = "使用日期")
-//    private LocalDate day;
-
     @ApiModelProperty(value = "价钱")
     private BigDecimal price;
 
@@ -73,21 +68,30 @@ public class OrderInfo extends BaseEntity {
     @NotFound(action = NotFoundAction.IGNORE)
     private User user;
 
-//    private boolean isUse;
+    private boolean isUse;
 
     private Long parentUserId;
 
     @ApiModelProperty(value = "多次使用")
     private boolean repeatedly;
 
-    @ApiModelProperty(value = "区分是哪种订单")
-    @Enumerated(EnumType.STRING)
-    private GoodType goodType;
+    @ApiModelProperty(value = "选择的规格Id")
+    private Long stockId;
+
+    @ApiModelProperty(value = "规格")
+    private String    specification;
+
+    @ApiModelProperty(value = "日期")
+    private LocalDate day;
 
-    @ApiModelProperty(value = "物流")
-    private String logistic;
+//    @ApiModelProperty(value = "区分是哪种订单")
+//    @Enumerated(EnumType.STRING)
+//    private GoodType goodType;
 
-    @ApiModelProperty(value = "物流单号")
-    private String trackingNumber;
+//    @ApiModelProperty(value = "物流")
+//    private String logistic;
+//
+//    @ApiModelProperty(value = "物流单号")
+//    private String trackingNumber;
 
 }

+ 2 - 0
src/main/java/com/izouma/jiashanxia/domain/OrderSnack.java

@@ -28,4 +28,6 @@ public class OrderSnack extends BaseEntity {
     private LocalDate day;
 
     private BigDecimal price;
+
+
 }

+ 6 - 7
src/main/java/com/izouma/jiashanxia/domain/User.java

@@ -81,13 +81,6 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "暂存")
     private BigDecimal cacheAmount;
 
-//    @ApiModelProperty(value = "推广")
-//    private BigDecimal promote;
-//
-//    private BigDecimal maker;
-//
-//    private BigDecimal general;
-
     @ApiModelProperty(value = "已提现收益")
     private BigDecimal withdraw;
 
@@ -96,6 +89,12 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "企业id")
     private Long companyId;
 
+    /*
+    绑定核销人员时需要
+     */
+    @ApiModelProperty(value = "品牌/企业id")
+    private Long attractionsId;
+
     @ApiModelProperty(value = "是否团队创始人")
     private Boolean teamFounder;
 

+ 34 - 0
src/main/java/com/izouma/jiashanxia/dto/CreateOrder.java

@@ -0,0 +1,34 @@
+package com.izouma.jiashanxia.dto;
+
+import com.izouma.jiashanxia.enums.PayMethod;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CreateOrder {
+    private Long userId;
+
+    @ApiModelProperty(value = "支付方式")
+    private PayMethod payMethod;
+
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+
+    @ApiModelProperty(value = "充值套餐")
+    private Long packageId;
+
+//    @ApiModelProperty(value = "价钱")
+//    private BigDecimal price;
+
+    private Long parentUserId;
+
+    @ApiModelProperty(value = "选择的规格Id")
+    private Long stockId;
+}

+ 56 - 52
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -7,10 +7,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.izouma.jiashanxia.domain.*;
 import com.izouma.jiashanxia.domain.Package;
-import com.izouma.jiashanxia.dto.GoodsDTO;
-import com.izouma.jiashanxia.dto.OrderInfoVO;
-import com.izouma.jiashanxia.dto.PackageGoodsDTO;
-import com.izouma.jiashanxia.dto.PageQuery;
+import com.izouma.jiashanxia.dto.*;
 import com.izouma.jiashanxia.enums.*;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.*;
@@ -43,6 +40,7 @@ public class OrderInfoService {
     private final WithdrawService      withdrawService;
     private final UserPackageFlowRepo  userPackageFlowRepo;
     private final UserService          userService;
+    private final StockRepo            stockRepo;
 
     public Page<OrderInfo> all(PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
@@ -89,52 +87,37 @@ public class OrderInfoService {
     /*
    下订单
     */
-    public OrderInfo createOrder1(OrderInfo orderInfo) {
-        Package aPackage = packageRepo.findById(orderInfo.getPackageId()).orElseThrow(new BusinessException("无套餐"));
+    public OrderInfo createOrder1(CreateOrder createOrder) {
+        Package aPackage = packageRepo.findById(createOrder.getPackageId()).orElseThrow(new BusinessException("无套餐"));
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
         String localTime = df.format(LocalDateTime.now());
-        String num = String.format("%05d", orderInfoRepo.orderNum() + 1);
-
-//        if (ObjectUtil.isNotEmpty(orderInfo.getSpecification())) {
-//
-//
-//        }
-
-//        OrderInfo order = OrderInfo.builder()
-//                .packageId(packageId)
-//                .status(OrderInfoStatus.UNPAID)
-//                .userId(userId)
-//                .payMethod(payMethod)
-//                .orderNumber(localTime + num)
-//                .price(aPackage.getAmount())
-//                .name(aPackage.getName())
-//                .repeatedly(aPackage.isRepeatedly())
-//                .num(1)
-//                .build();
-        return orderInfoRepo.save(orderInfo);
-    }
-
-    /*
-    新用户点进分享链接
-     */
-    public void saveParent(Long parent, Long userId) {
-        User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
-        // 判断上级是否为空
-        if (ObjectUtil.isNotEmpty(user.getParent())) {
-            return;
-        }
-        // 判断新用户
-        List<OrderInfo> orderInfos = orderInfoRepo.findAllByUserId(userId);
-        long count = orderInfos.stream()
-                .filter(orderInfo -> !OrderInfoStatus.CANCELLED.equals(orderInfo.getStatus()) || !OrderInfoStatus.UNPAID
-                        .equals(orderInfo.getStatus()))
-                .count();
-        if (count > 0) {
-            return;
+        String orderNum = String.format("%05d", orderInfoRepo.orderNum() + 1);
+        BigDecimal price = aPackage.getAmount();
+        OrderInfo order = OrderInfo.builder()
+                .packageId(createOrder.getPackageId())
+                .status(OrderInfoStatus.UNPAID)
+                .userId(createOrder.getUserId())
+                .payMethod(createOrder.getPayMethod())
+                .orderNumber(localTime + orderNum)
+                .name(aPackage.getName())
+                .repeatedly(aPackage.isRepeatedly())
+                .num(createOrder.getNum())
+                .build();
+        if (ObjectUtil.isNotEmpty(createOrder.getStockId())) {
+            // 保存规格
+            Stock stock = stockRepo.findById(createOrder.getStockId()).orElseThrow(new BusinessException("无规格"));
+            if (createOrder.getNum() > stock.getInventory()) {
+                throw new BusinessException("无库存");
+            }
+            order.setStockId(createOrder.getStockId());
+            order.setPrice(stock.getPrice().multiply(BigDecimal.valueOf(createOrder.getNum())));
+            order.setDay(stock.getDay());
+            order.setSpecification(stock.getSpecification());
+            price = stock.getPrice();
         }
-        // 保存
-        user.setParent(parent);
-        userRepo.save(user);
+        order.setPrice(price.multiply(new BigDecimal(createOrder.getNum())));
+
+        return orderInfoRepo.save(order);
     }
 
     /*
@@ -177,6 +160,12 @@ public class OrderInfoService {
         order.setPaidAt(LocalDateTime.now());
         orderInfoRepo.save(order);
 
+        if (ObjectUtil.isNotEmpty(order.getStockId())) {
+            Stock stock = stockRepo.findById(order.getStockId()).orElseThrow(new BusinessException("无规格"));
+            stock.setInventory(stock.getInventory() - order.getNum());
+            stockRepo.save(stock);
+        }
+
         Long userId = order.getUserId();
 
         // 套餐内商品
@@ -196,10 +185,10 @@ public class OrderInfoService {
 
         // 用户
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
-        if (!user.isVip()) {
-            user.setVip(true);
-            userRepo.save(user);
-        }
+//        if (!user.isVip()) {
+//            user.setVip(true);
+//            userRepo.save(user);
+//        }
 
         Long parent = user.getParent();
         // 用户id和上级id相同
@@ -476,6 +465,18 @@ public class OrderInfoService {
         boolean isMaker = true;
         boolean isHead = true;
 
+        // 收益为0元 直接跳出
+        if (BigDecimal.ZERO.compareTo(maker) >= 0) {
+            isMaker = false;
+        }
+        if (BigDecimal.ZERO.compareTo(general) >= 0) {
+            isGeneral = false;
+        }
+        if (BigDecimal.ZERO.compareTo(head) >= 0) {
+            isHead = false;
+        }
+
+
         CommissionRecord record = CommissionRecord.builder()
                 .userId(parent.getId())
                 .fromUserId(userId)
@@ -484,6 +485,9 @@ public class OrderInfoService {
                 .build();
 
         while (parent != null) {
+            if (!isGeneral && !isMaker && !isHead) {
+                return;
+            }
             switch (parent.getMember()) {
                 case MAKER:
                     if (isMaker) {
@@ -546,7 +550,7 @@ public class OrderInfoService {
                 default:
                     break;
             }
-            if (!isGeneral && !isMaker) {
+            if (ObjectUtil.isNull(parent.getParent())) {
                 return;
             }
             parent = userRepo.findById(parent.getParent()).orElse(null);

+ 1 - 1
src/main/java/com/izouma/jiashanxia/service/UserService.java

@@ -417,7 +417,7 @@ public class UserService {
     }
 
     /*
-    成为达人
+    成为团长
      */
     public User becomeExpert(User user) {
         if (!Member.NORMAL.equals(user.getMember())) {

+ 4 - 2
src/main/java/com/izouma/jiashanxia/web/OrderInfoController.java

@@ -1,6 +1,7 @@
 package com.izouma.jiashanxia.web;
 
 import com.izouma.jiashanxia.domain.OrderInfo;
+import com.izouma.jiashanxia.dto.CreateOrder;
 import com.izouma.jiashanxia.dto.OrderInfoVO;
 import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.enums.PayMethod;
@@ -72,8 +73,9 @@ public class OrderInfoController extends BaseController {
 
     @PostMapping("/create")
     @ApiOperation("创建订单")
-    public OrderInfo create(@RequestParam Long packageId, @RequestParam PayMethod payMethod) {
-        return orderInfoService.createOrder(SecurityUtils.getAuthenticatedUser().getId(), packageId, payMethod);
+    public OrderInfo create(@RequestBody CreateOrder order) {
+//        return orderInfoService.createOrder(SecurityUtils.getAuthenticatedUser().getId(), packageId, payMethod);
+        return orderInfoService.createOrder1(order);
     }
 
     @PostMapping("/cancel")

+ 1 - 1
src/main/java/com/izouma/jiashanxia/web/UserController.java

@@ -191,7 +191,7 @@ public class UserController extends BaseController {
     }
 
     @PostMapping("/becomeExpert")
-    @ApiOperation("成为佳客")
+    @ApiOperation("成为团长")
     public User becomeExpert() {
         return userService.becomeExpert(SecurityUtils.getAuthenticatedUser());
     }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 314 - 307
src/main/vue/package-lock.json


+ 1 - 0
src/main/vue/package.json

@@ -23,6 +23,7 @@
     "qs": "^6.9.0",
     "resolve-url": "^0.2.1",
     "tinymce": "^5.2.2",
+    "vant": "^2.12.6",
     "vue": "^2.6.11",
     "vue-avatar-cropper": "^1.0.5",
     "vue-axios": "^2.1.5",

+ 15 - 4
src/test/java/com/izouma/jiashanxia/service/OrderInfoServiceTest.java

@@ -1,8 +1,7 @@
 package com.izouma.jiashanxia.service;
 
-import cn.hutool.core.collection.CollUtil;
+import com.izouma.jiashanxia.dto.CreateOrder;
 import com.izouma.jiashanxia.dto.OrderInfoVO;
-import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.enums.PayMethod;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -28,7 +27,7 @@ public class OrderInfoServiceTest {
 
     @Test
     public void completed() {
-        orderInfoService.completed1(934L, "11000001");
+        orderInfoService.completed1(1043L, "11000001");
     }
 
     @Test
@@ -44,6 +43,18 @@ public class OrderInfoServiceTest {
 
     @Test
     public void test1() {
-        orderInfoService.distribution(636L,255L,"1234", BigDecimal.valueOf(600));
+        orderInfoService.distribution(636L, 255L, "1234", BigDecimal.valueOf(600));
+    }
+
+    @Test
+    public void test2() {
+        CreateOrder build = CreateOrder.builder()
+                .num(1)
+                .packageId(17L)
+                .stockId(1009L)
+                .userId(916L)
+                .payMethod(PayMethod.WEIXIN)
+                .build();
+        System.out.println(orderInfoService.createOrder1(build));
     }
 }

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov