|
@@ -1,16 +1,19 @@
|
|
|
package com.izouma.dingdong.service.merchant;
|
|
package com.izouma.dingdong.service.merchant;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.izouma.dingdong.config.Constants;
|
|
import com.izouma.dingdong.config.Constants;
|
|
|
import com.izouma.dingdong.converter.LongArrayConverter;
|
|
import com.izouma.dingdong.converter.LongArrayConverter;
|
|
|
import com.izouma.dingdong.converter.StringArrayConverter;
|
|
import com.izouma.dingdong.converter.StringArrayConverter;
|
|
|
import com.izouma.dingdong.domain.backstage.Email;
|
|
import com.izouma.dingdong.domain.backstage.Email;
|
|
|
|
|
+import com.izouma.dingdong.domain.backstage.Priority;
|
|
|
import com.izouma.dingdong.domain.merchant.*;
|
|
import com.izouma.dingdong.domain.merchant.*;
|
|
|
import com.izouma.dingdong.dto.AppraisalMerDTO;
|
|
import com.izouma.dingdong.dto.AppraisalMerDTO;
|
|
|
import com.izouma.dingdong.enums.ApplyStatus;
|
|
import com.izouma.dingdong.enums.ApplyStatus;
|
|
|
import com.izouma.dingdong.enums.GoodType;
|
|
import com.izouma.dingdong.enums.GoodType;
|
|
|
import com.izouma.dingdong.exception.BusinessException;
|
|
import com.izouma.dingdong.exception.BusinessException;
|
|
|
import com.izouma.dingdong.repo.backstage.EmailRepo;
|
|
import com.izouma.dingdong.repo.backstage.EmailRepo;
|
|
|
|
|
+import com.izouma.dingdong.repo.backstage.PriorityRepo;
|
|
|
import com.izouma.dingdong.repo.merchant.*;
|
|
import com.izouma.dingdong.repo.merchant.*;
|
|
|
import com.izouma.dingdong.service.AppraisalService;
|
|
import com.izouma.dingdong.service.AppraisalService;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
@@ -37,6 +40,7 @@ public class GoodsService {
|
|
|
private SalesRepo salesRepo;
|
|
private SalesRepo salesRepo;
|
|
|
private MerchantSettingsService merchantSettingsService;
|
|
private MerchantSettingsService merchantSettingsService;
|
|
|
private MerchantService merchantService;
|
|
private MerchantService merchantService;
|
|
|
|
|
+ private PriorityRepo priorityRepo;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 添加修改商品
|
|
* 添加修改商品
|
|
@@ -283,15 +287,77 @@ public class GoodsService {
|
|
|
LocalDate now = LocalDate.now();
|
|
LocalDate now = LocalDate.now();
|
|
|
//上个月日期
|
|
//上个月日期
|
|
|
LocalDate lastMonth = now.minusMonths(1);
|
|
LocalDate lastMonth = now.minusMonths(1);
|
|
|
- List<Sales> sales = salesRepo.findAllByGoodsIdAndDayBetween(goodsId, lastMonth, now);
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ LocalDate day = now.minusDays(1);
|
|
|
|
|
+ //月销为0天数
|
|
|
|
|
+ int countZeroSales = 0;
|
|
|
//点赞数
|
|
//点赞数
|
|
|
Integer likes = 0;
|
|
Integer likes = 0;
|
|
|
//差评数
|
|
//差评数
|
|
|
Integer badReview = 0;
|
|
Integer badReview = 0;
|
|
|
- for (Sales s : sales) {
|
|
|
|
|
- likes += s.getDayLikes();
|
|
|
|
|
- badReview += s.getDayBad();
|
|
|
|
|
|
|
+ //销量
|
|
|
|
|
+ Integer sales = 0;
|
|
|
|
|
+
|
|
|
|
|
+ while (day.isBefore(lastMonth)) {
|
|
|
|
|
+ Sales daySales = salesRepo.findByGoodsIdAndDay(goodsId, now.minusDays(1));
|
|
|
|
|
+ if (ObjectUtil.isNull(daySales)) {
|
|
|
|
|
+ //月销为0天数
|
|
|
|
|
+ countZeroSales++;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ likes += daySales.getDayLikes();
|
|
|
|
|
+ badReview += daySales.getDayBad();
|
|
|
|
|
+ sales += daySales.getDaySales();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+// List<Sales> monthSales = salesRepo.findAllByGoodsIdAndDayBetween(goodsId, lastMonth, now);
|
|
|
|
|
+// //点赞数
|
|
|
|
|
+// Integer likes = 0;
|
|
|
|
|
+// //差评数
|
|
|
|
|
+// Integer badReview = 0;
|
|
|
|
|
+// //销量
|
|
|
|
|
+// Integer sales = 0;
|
|
|
|
|
+// for (Sales s : monthSales) {
|
|
|
|
|
+// likes += s.getDayLikes();
|
|
|
|
|
+// badReview += s.getDayBad();
|
|
|
|
|
+// sales += s.getDaySales();
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+ boolean add = true;
|
|
|
|
|
+ boolean plus = false;
|
|
|
|
|
+
|
|
|
|
|
+ //上一月该商品新增点赞数-新增差评数*10>0
|
|
|
|
|
+ if (likes - badReview * 10 < 0) {
|
|
|
|
|
+ add = false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ Integer priority = goods.getPriority();
|
|
|
|
|
+ Priority goodsPriority = priorityRepo.findByTypeAndLevel(1, priority);
|
|
|
|
|
+
|
|
|
|
|
+ //新增点赞数 月销量
|
|
|
|
|
+ if (likes < goodsPriority.getLikes() || sales < goodsPriority.getMonthSales()) {
|
|
|
|
|
+ add = false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (countZeroSales < goodsPriority.getZeroSalesDay()) {
|
|
|
|
|
+ plus = true;
|
|
|
|
|
+ } else if (likes - badReview * 3 < 0) {
|
|
|
|
|
+ plus = true;
|
|
|
|
|
+ } else if (sales < goodsPriority.getLessMonthSales()) {
|
|
|
|
|
+ plus = true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (add) {
|
|
|
|
|
+ if (!priority.equals(priorityRepo.findByTypeAndLevelMax(1))) {
|
|
|
|
|
+ goods.setPriority(priority + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (plus) {
|
|
|
|
|
+ if (!priority.equals(1)) {
|
|
|
|
|
+ goods.setPriority(priority - 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|