Browse Source

Merge branch 'master' of http://git.zonelife.cn:3000/huangyang/national-motion-backend

zhangxin 1 week ago
parent
commit
1d3f6a194d

+ 0 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/CoachServiceImpl.java

@@ -117,7 +117,6 @@ public class CoachServiceImpl implements ICoachService {
                         .eq(AppOrderProduct::getProductId, id)
                         .eq(AppOrderProduct::getStatus,0)
                         .eq(AppOrderProduct::getDelFlag,0)
-                        .eq(AppOrderProduct::getProductOrderStatus,1)
                         .ge(AppOrderProduct::getCreateTime, Date.from(startOfYear.atZone(ZoneId.systemDefault()).toInstant())) // >= 2025-01-01
                         .lt(AppOrderProduct::getCreateTime, Date.from(endOfYear.atZone(ZoneId.systemDefault()).toInstant())) // < 2026-01-01
         ));

+ 0 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -274,7 +274,6 @@ public class DetailServiceImpl implements IDetailService {
                         .eq(AppOrderProduct::getProductId, id)
                         .eq(AppOrderProduct::getStatus,0)
                         .eq(AppOrderProduct::getDelFlag,0)
-                        .eq(AppOrderProduct::getProductOrderStatus,1)
                         .ge(AppOrderProduct::getCreateTime, Date.from(startOfYear.atZone(ZoneId.systemDefault()).toInstant())) // >= 2025-01-01
                         .lt(AppOrderProduct::getCreateTime, Date.from(endOfYear.atZone(ZoneId.systemDefault()).toInstant())) // < 2026-01-01
         ));

+ 68 - 18
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -4,22 +4,22 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.extern.log4j.Log4j2;
 import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.app.service.IOrderService;
 import org.jeecg.modules.app.vo.OrderVO;
-import org.jeecg.modules.system.app.entity.AppCourses;
-import org.jeecg.modules.system.app.entity.AppOrder;
-import org.jeecg.modules.system.app.entity.AppSitePlace;
-import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.ZoneId;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
@@ -43,8 +43,17 @@ public class OrderServiceImpl implements IOrderService {
     private AppOrderUserMapper appOrderUserMapper;
 
     @Override
-    public OrderVO.createOrderPlaceSchool createOrderPlaceSchool(String rulesId) {
-
+    @Transactional(rollbackFor = Exception.class)
+    public OrderVO.createOrderPlaceSchool createOrderPlaceSchool(String rulesId, String userIds) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<String> list = Arrays.asList(rulesId.split(","));
+        AppOrder order = createOrder(list, 0, user.getId(), userIds);
+        if(null == order) throw new JeecgBootException("创建订单失败!");
+        AppSitePlace appSitePlace = appSitePlaceMapper.selectById(list.get(0));
+        OrderVO.createOrderPlaceSchool result = new OrderVO.createOrderPlaceSchool();
+//        result.setId(order.getId())
+//                .setOrderStatus(order.getOrderStatus())
+//                .setPlaceName()
         return null;
     }
 
@@ -152,11 +161,13 @@ public class OrderServiceImpl implements IOrderService {
      * @Param id type userId
      * @return
      **/
-    private String createOrder(List<String> id, String type, String userId) {
-        //订单类型;0场地/1赛事/2课程
+    @Transactional
+    public AppOrder createOrder(List<String> id, int type, String userId, String userIds) {
+        //todo 保险 闸机待接入
+        //订单类型;0场地1赛事2课程
         AppOrder appOrder = new AppOrder();
         switch(type){
-            case "0":
+            case 0:
                 List<AppSitePriceRules> priceRules = appSitePriceRulesMapper.selectList(Wrappers.<AppSitePriceRules>lambdaQuery()
                         .in(AppSitePriceRules::getId, id));
                 BigDecimal totalPrice = priceRules.stream()
@@ -165,35 +176,41 @@ public class OrderServiceImpl implements IOrderService {
                 if(priceRules.get(0).getType() == 0){
                     if(totalPrice.compareTo(BigDecimal.ZERO) == 0){
                         appOrder.setPayType(3)
-                                .setOrderStatus(2);
+                                .setOrderStatus(2)
+                                .setPayTime(new Date());
                     }else {
                         appOrder.setPayType(2)
                                 .setOrderStatus(1);
                     }
-                    appOrder.setOrderCode(generateOrderNumber(0))
+                    String s = generateOrderNumber(0);
+                    appOrder.setOrderCode(s)
                             .setOrderCode(priceRules.get(0).getOrgCode())
-                            .setTenantId(priceRules.get(0).getTenantId())
                             .setProductIds(priceRules.get(0).getSitePlaceId())
                             .setType(0)
                             .setUserId(userId)
-                            .setOriginalPrice(totalPrice);
-//                            .setPrice(totalPrice)
+                            .setOriginalPrice(totalPrice)
+                            .setPrice(totalPrice)
+                            .setCreateTime(new Date())
+                            .setUpdateTime(new Date())
+                            .setCreateBy(userId)
+                            .setUpdateBy(userId);
+                    createOrderCoupon(s, userIds);
                 }
                 break;
-            case "1":
+            case 1:
                 break;
-            case "2":
+            case 2:
                 break;
         }
         appOrderMapper.insert(appOrder);
-        return "";
+        return appOrder;
     }
 
     /**
      * @Author SheepHy
      * @Description 订单编号生成逻辑
      * @Date 17:18 2025/7/15
-     * @return
+     * @return String 订单号
      **/
     private String generateOrderNumber(int type) {
         String format = DateUtil.format(new Date(), "yyyyMMddHHmmss");
@@ -204,4 +221,37 @@ public class OrderServiceImpl implements IOrderService {
             return "T" + format + nextInt;
         }
     }
+
+    /**
+     * @Author SheepHy
+     * @Description 根据订单及购买人数生成对应券码
+     * @Date 10:20 2025/7/16
+     * @Param
+     * @return
+     **/
+    private void createOrderCoupon(String orderId, String userIds) {
+        String lastFourDigits = orderId.substring(orderId.length() - 4);
+        int nextInt = ThreadLocalRandom.current().nextInt(1000, 10000);
+        Arrays.asList(userIds.split(",")).forEach(userId -> {
+            String substring = userId.substring(orderId.length() - 2);
+            AppIsin appIsin = new AppIsin();
+            appIsin.setOrderId(orderId)
+                    .setFamilyId(userId)
+                    .setIsinCode(lastFourDigits + nextInt + substring)
+                    .setIsinStatus(1)
+                    .setCreateTime(new Date())
+                    .setUpdateTime(new Date());
+        });
+    }
+
+//    /**
+//     * @Author SheepHy
+//     * @Description 生成订单明细
+//     * @Date 11:57 2025/7/16
+//     * @Param
+//     * @return
+//     **/
+//    private void createOrderProduct(String orderId, List<String> id,) {
+//
+//    }
 }