|
@@ -11,20 +11,26 @@ import com.tourism.common.core.constant.GlobalDeletedFlag;
|
|
|
import com.tourism.common.core.exception.MyRuntimeException;
|
|
|
import com.tourism.common.core.object.CallResult;
|
|
|
import com.tourism.common.core.object.MyRelationParam;
|
|
|
+import com.tourism.common.core.object.TokenData;
|
|
|
import com.tourism.common.core.util.MyDateUtil;
|
|
|
import com.tourism.common.core.util.MyModelUtil;
|
|
|
+import com.tourism.common.huaweicloud.obs.util.MergeAvatarsFlexUtils;
|
|
|
import com.tourism.common.sequence.wrapper.IdGeneratorWrapper;
|
|
|
import com.tourism.webadmin.app.website.dto.TourCalcTotalAmountParam;
|
|
|
+import com.tourism.webadmin.app.website.dto.TourGroupUserToWebDto;
|
|
|
import com.tourism.webadmin.app.website.dto.TourProjectGroupPurchaseDtoToWebDto;
|
|
|
import com.tourism.webadmin.app.website.dto.TourismBookProjectDto;
|
|
|
import com.tourism.webadmin.back.dao.TourProjectGroupPurchaseMapper;
|
|
|
import com.tourism.webadmin.back.model.TourOrder;
|
|
|
import com.tourism.webadmin.back.model.TourProjectGroupPurchase;
|
|
|
import com.tourism.webadmin.back.model.TourProjectGroupPurchaseDetail;
|
|
|
+import com.tourism.webadmin.back.model.TourUser;
|
|
|
+import com.tourism.webadmin.back.service.TourOrderService;
|
|
|
import com.tourism.webadmin.back.service.TourProjectGroupPurchaseDetailService;
|
|
|
import com.tourism.webadmin.back.service.TourProjectGroupPurchaseService;
|
|
|
import com.tourism.webadmin.back.service.TourismProjectService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -53,6 +59,10 @@ public class TourProjectGroupPurchaseServiceImpl extends BaseService<TourProject
|
|
|
private TourismProjectService tourismProjectService;
|
|
|
@Autowired
|
|
|
private TourProjectGroupPurchaseDetailService tourProjectGroupPurchaseDetailService;
|
|
|
+ @Autowired
|
|
|
+ private TourOrderService tourOrderService;
|
|
|
+ @Autowired
|
|
|
+ private MergeAvatarsFlexUtils mergeAvatarsFlexUtils;
|
|
|
|
|
|
/**
|
|
|
* 返回当前Service的主表Mapper对象。
|
|
@@ -174,7 +184,7 @@ public class TourProjectGroupPurchaseServiceImpl extends BaseService<TourProject
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public TourProjectGroupPurchase handleGroupBuy(TourismBookProjectDto paramDTO, TourOrder tourOrder) {
|
|
|
+ public TourProjectGroupPurchase handleGroupBuy(TourismBookProjectDto paramDTO, TourOrder tourOrder){
|
|
|
TourProjectGroupPurchase groupPurchase = this.getById(paramDTO.getGroupId());
|
|
|
if (groupPurchase != null) {
|
|
|
// 先判断下拼团信息是不是过期了 由于这里默认是yyyy-MM-dd 00:00:00 所以要加一天
|
|
@@ -185,13 +195,22 @@ public class TourProjectGroupPurchaseServiceImpl extends BaseService<TourProject
|
|
|
}else {
|
|
|
throw new MyRuntimeException(ErrorCodeEnum.GROUP_BUYING_DOES_NOT_EXIST.getErrorMessage());
|
|
|
}
|
|
|
-
|
|
|
// 计算此次订单参加拼团人数
|
|
|
Integer groupCount = paramDTO.getAdultNumber() + paramDTO.getChildrenNumber();
|
|
|
-
|
|
|
if(groupCount > groupPurchase.getMaxCount()){
|
|
|
throw new MyRuntimeException(ErrorCodeEnum.PEOPLE_EXCCEDS.getErrorMessage());
|
|
|
}
|
|
|
+ // 获取已参团的用户头像信息并拼接头像,放到团购信息里
|
|
|
+ String usersAvatars = groupPurchase.getUsersAvatars();
|
|
|
+ if(StringUtils.isNotBlank(usersAvatars)){
|
|
|
+ groupPurchase.setUsersAvatars(usersAvatars + "," + TokenData.takeFromRequest().getHeadImageUrl());
|
|
|
+ }else {
|
|
|
+ groupPurchase.setUsersAvatars(TokenData.takeFromRequest().getHeadImageUrl());
|
|
|
+ }
|
|
|
+ // usersAvatars用,分割成List
|
|
|
+ List<String> headImageUrlList = Arrays.asList(usersAvatars.split(","));
|
|
|
+ groupPurchase.setSplicingAvatars(this.splicingAvatars(headImageUrlList));
|
|
|
+
|
|
|
// 2024-01-08逻辑修改 // 判断人数是不是超了,如果超了或者人数满了,自动开个完全一样的新团,直接在新团上加数量
|
|
|
// 如果超过团购人数,则需要提醒已经满团,不允许客户继续参团
|
|
|
if(groupCount + groupPurchase.getNowCount() > groupPurchase.getMaxCount()) {
|
|
@@ -220,6 +239,8 @@ public class TourProjectGroupPurchaseServiceImpl extends BaseService<TourProject
|
|
|
tourOrder.setAdultPrice(groupPurchase.getNowPrice());
|
|
|
tourOrder.setChildrenPrice(groupPurchase.getNowChildPrice());
|
|
|
tourOrder.setGroupPurchaseProgressId(Long.valueOf(groupPurchase.getId()));
|
|
|
+
|
|
|
+ // 查询
|
|
|
return groupPurchase;
|
|
|
}
|
|
|
|
|
@@ -253,11 +274,57 @@ public class TourProjectGroupPurchaseServiceImpl extends BaseService<TourProject
|
|
|
|
|
|
tourOrder.setAdultPrice(groupPurchase.getNowPrice());
|
|
|
tourOrder.setChildrenPrice(groupPurchase.getNowChildPrice());
|
|
|
+ // 获取已参团的用户头像信息并拼接头像,放到团购信息里
|
|
|
+ // 查询已经参团的用户头像,拼接好赋值给团购信息
|
|
|
+ TourGroupUserToWebDto dto = new TourGroupUserToWebDto();
|
|
|
+ dto.setGroupPurchaseProgressId(groupPurchase.getId());
|
|
|
+ dto.setCurrentOrderId(tourOrder.getId());
|
|
|
+ // 查询已经参团的用户头像,拼接好赋值给团购信息
|
|
|
+ List<TourUser> tourUserList = tourOrderService.getTourUserListByProjectId(dto);
|
|
|
+ // tourUserList里的头像url提取成List<String>
|
|
|
+ List<String> headImageUrlList = tourUserList.stream().map(TourUser::getHeadImageUrl).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // headImageUrlList使用,分割,转为字符串
|
|
|
+ if(headImageUrlList != null && headImageUrlList.size() > 0) {
|
|
|
+ // 如果是参与拼团,那么加上当前用户头像,如果是取消,就不用处理
|
|
|
+ groupPurchase.setSplicingAvatars(this.splicingAvatars(headImageUrlList));
|
|
|
+ groupPurchase.setUsersAvatars(String.join(",", headImageUrlList));
|
|
|
+ }
|
|
|
// 修改团购当前参团人数、当前价格、下一阶段价格、距离下一阶段数量
|
|
|
this.updateById(groupPurchase);
|
|
|
return groupPurchase;
|
|
|
}
|
|
|
|
|
|
+// @Override
|
|
|
+// public void initAvatar() {
|
|
|
+// // 查询有人参团的团购
|
|
|
+// LambdaQueryWrapper<TourProjectGroupPurchase> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+// queryWrapper.ge(TourProjectGroupPurchase::getNowCount, 1);
|
|
|
+// List<TourProjectGroupPurchase> tourProjectGroupPurchases = tourProjectGroupPurchaseMapper.selectList(queryWrapper);
|
|
|
+// // 查询这些团购参与过的用户
|
|
|
+// for(TourProjectGroupPurchase tourProjectGroupPurchase : tourProjectGroupPurchases) {
|
|
|
+// TourGroupUserToWebDto dto = new TourGroupUserToWebDto();
|
|
|
+// dto.setGroupPurchaseProgressId(tourProjectGroupPurchase.getId());
|
|
|
+// List<TourUser> userList = tourOrderService.getTourUserListByProjectId(dto);
|
|
|
+// List<String> headImageUrlList = new ArrayList<>();
|
|
|
+// for (TourUser tourUser : userList) {
|
|
|
+// headImageUrlList.add(StringUtils.isNotBlank(tourUser.getHeadImageUrl()) ? tourUser.getHeadImageUrl() : "https://t.xiaoyaotravel.com/default_profile/defaultAvatar.png");
|
|
|
+// }
|
|
|
+// tourProjectGroupPurchase.setSplicingAvatars(this.splicingAvatars(headImageUrlList));
|
|
|
+// tourProjectGroupPurchase.setUsersAvatars(String.join(",", headImageUrlList));
|
|
|
+// this.updateById(tourProjectGroupPurchase);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param headImageUrlList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String splicingAvatars(List<String> headImageUrlList) {
|
|
|
+ return mergeAvatarsFlexUtils.mergeAndUploadAvatars(headImageUrlList);
|
|
|
+ }
|
|
|
+
|
|
|
private TourProjectGroupPurchase buildDefaultValue(TourProjectGroupPurchase tourProjectGroupPurchase) {
|
|
|
if (tourProjectGroupPurchase.getId() == null) {
|
|
|
tourProjectGroupPurchase.setId(idGenerator.nextLongId());
|