|
@@ -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,) {
|
|
|
+//
|
|
|
+// }
|
|
|
}
|