Commit a575b78a authored by Administrator's avatar Administrator

Merge branch 'staging' into 'master'

Staging

See merge request !177
parents 81f09f4f 1942954b
...@@ -510,88 +510,49 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -510,88 +510,49 @@ public class AdministratorServiceImpl implements AdministratorService {
@Override @Override
public PromotionInfoDto countPromotionInfos(String username, String promotionCode, String beginDate, String endDate) { public PromotionInfoDto countPromotionInfos(String username, String promotionCode, String beginDate, String endDate) {
// 1. 根据传入的 username 或者 推荐码 获取用户信息
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
// 1. 根据传入的 username 或者 推荐码 获取用户信息
Account account = getAccount(username, promotionCode); Account account = getAccount(username, promotionCode);
log.info("===>countPromotionInfos step-1 consume time {}", System.currentTimeMillis() - start);
// 2. 获取 该推荐码下所有的用户 // 2. 获取 该推荐码下所有的用户
start = System.currentTimeMillis();
List<Account> accounts = accountRepository.findAllByPromotionCodeAndParentIsNull(account.getPromotion().getCode()); List<Account> accounts = accountRepository.findAllByPromotionCodeAndParentIsNull(account.getPromotion().getCode());
log.info("===>countPromotionInfos step-2 consume time {}", System.currentTimeMillis() - start);
// promotion 用来存储所有用户的消费信息 // promotion 用来存储所有用户的消费信息
PromotionInfoDto promotionInfoDto = new PromotionInfoDto(); PromotionInfoDto promotionInfoDto = new PromotionInfoDto();
/*promotionInfoDto.setFirstLevelCommission(0);
promotionInfoDto.setFirstLevelIps(0);
promotionInfoDto.setSecondLevelCommission(0);
promotionInfoDto.setSecondLevelIps(0);*/
Account finalAccount = account;
try { try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date beginTime = formatter.parse(beginDate); Date beginTime = formatter.parse(beginDate);
Date endTime = formatter.parse(endDate); Date endTime = formatter.parse(endDate);
start = System.currentTimeMillis();
if (accounts != null && accounts.size() > 0) { if (accounts != null && accounts.size() > 0) {
// 邀请的一级用户数 // 邀请的一级用户数
promotionInfoDto.setFirstLevelInvitedUsers(accounts.size()); promotionInfoDto.setFirstLevelInvitedUsers(accounts.size());
/*accounts.forEach(x -> {
long start2 = System.currentTimeMillis();
int[] arr1 = getCommissionAndIps(beginTime, endTime, x);
log.info("===>countPromotionInfos step-3-{} consume time {}", accounts.indexOf(x) + 1, (System.currentTimeMillis() - start2));
promotionInfoDto.setFirstLevelCommission(promotionInfoDto.getFirstLevelCommission() + arr1[0]);
promotionInfoDto.setFirstLevelIps(promotionInfoDto.getFirstLevelIps() + arr1[1]);
// 如果当前账户的推荐码是公司销售的推荐码,且当前账户是父账户
if (finalAccount.getPromotion().isSale() && x.getParent() == null) {
// 获取当前账户的下级账户
List<Account> secondPromotes = accountRepository.findByPromotionCodeAndParentIsNull(x.getPromotion().getCode());
if (secondPromotes != null && secondPromotes.size() > 0) {
*//*for (Account secondPromote : secondPromotes) {
// 将下级账户及下级账户的子账户中未过期的ip统计到 ipCount中
long start3 = System.currentTimeMillis();
int[] arr2 = getCommissionAndIps(beginTime, endTime, secondPromote);
log.info("===>countPromotionInfos step-3-{}-{} consume time {}", accounts.indexOf(x) + 1, secondPromotes.indexOf(secondPromote) + 1, (System.currentTimeMillis() - start3));
promotionInfoDto.setSecondLevelCommission(promotionInfoDto.getSecondLevelCommission() + arr2[0]);
promotionInfoDto.setSecondLevelIps(promotionInfoDto.getSecondLevelIps() + arr2[1]);
}*//*
long start3 = System.currentTimeMillis();
int[] arr2 = getCommissionAndIps(beginTime, endTime, secondPromotes.stream().map(Account::getName).collect(Collectors.toList()));
log.info("===>countPromotionInfos step-3-{}-{} consume time {}", accounts.indexOf(x) + 1, "1", (System.currentTimeMillis() - start3));
promotionInfoDto.setSecondLevelCommission(promotionInfoDto.getSecondLevelCommission() + arr2[0]);
promotionInfoDto.setSecondLevelIps(promotionInfoDto.getSecondLevelIps() + arr2[1]);
}
}
});*/
long start2 = System.currentTimeMillis();
int[] arr1 = getCommissionAndIps(beginTime, endTime, accounts.stream().map(Account::getName).collect(Collectors.toList())); int[] arr1 = getCommissionAndIps(beginTime, endTime, accounts.stream().map(Account::getName).collect(Collectors.toList()));
log.info("===>countPromotionInfos step-3-1 consume time {}", (System.currentTimeMillis() - start2));
promotionInfoDto.setFirstLevelCommission(arr1[0]); promotionInfoDto.setFirstLevelCommission(arr1[0]);
promotionInfoDto.setFirstLevelIps(arr1[1]); promotionInfoDto.setFirstLevelIps(arr1[1]);
List<String> codeList = accounts.stream().filter(x -> x.getParent() == null).map(x -> x.getPromotion().getCode()).collect(Collectors.toList()); List<String> codeList = accounts.stream().filter(x -> x.getParent() == null).map(x -> x.getPromotion().getCode()).collect(Collectors.toList());
if (finalAccount.getPromotion().isSale()) { if (account.getPromotion().isSale()) {
List<Account> secondPromotes = accountRepository.findByPromotionCodeInAndParentIsNull(codeList); List<Account> secondPromotes = accountRepository.findByPromotionCodeInAndParentIsNull(codeList);
if (secondPromotes != null && secondPromotes.size() > 0) { if (secondPromotes != null && secondPromotes.size() > 0) {
long start3 = System.currentTimeMillis();
int[] arr2 = getCommissionAndIps(beginTime, endTime, secondPromotes.stream().map(Account::getName).collect(Collectors.toList())); int[] arr2 = getCommissionAndIps(beginTime, endTime, secondPromotes.stream().map(Account::getName).collect(Collectors.toList()));
log.info("===>countPromotionInfos step-3-2 consume time {}", (System.currentTimeMillis() - start3));
promotionInfoDto.setSecondLevelCommission(arr2[0]); promotionInfoDto.setSecondLevelCommission(arr2[0]);
promotionInfoDto.setSecondLevelIps(arr2[1]); promotionInfoDto.setSecondLevelIps(arr2[1]);
} }
} }
} }
log.info("===>countPromotionInfos step-4 consume time {}", System.currentTimeMillis() - start);
// 设置总ip // 设置总ip
promotionInfoDto.setAllLevelIps(promotionInfoDto.getFirstLevelIps() + promotionInfoDto.getSecondLevelIps()); promotionInfoDto.setAllLevelIps(promotionInfoDto.getFirstLevelIps() + promotionInfoDto.getSecondLevelIps());
// 设置应当提现的礼物金额 // 设置应当提现的礼物金额
if (finalAccount.getPromotion().isSale()) { if (account.getPromotion().isSale()) {
promotionInfoDto.setGift(promotionInfoDto.getFirstLevelCommission() * 0.1 + promotionInfoDto.getSecondLevelCommission() * 0.02); promotionInfoDto.setGift(promotionInfoDto.getFirstLevelCommission() * 0.1 + promotionInfoDto.getSecondLevelCommission() * 0.02);
} else { } else {
promotionInfoDto.setGift(promotionInfoDto.getFirstLevelCommission() * 0.08); promotionInfoDto.setGift(promotionInfoDto.getFirstLevelCommission() * 0.08);
} }
log.info("===>countPromotionInfos consume time {}", System.currentTimeMillis() - start);
return promotionInfoDto; return promotionInfoDto;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
......
...@@ -3,10 +3,7 @@ package com.edgec.browserbackend.browser.controller; ...@@ -3,10 +3,7 @@ package com.edgec.browserbackend.browser.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.edgec.browserbackend.account.dto.ResultDto; import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode; import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.dto.ShopPageResultDto; import com.edgec.browserbackend.browser.dto.*;
import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.dto.ShopResultDto;
import com.edgec.browserbackend.browser.dto.ShopStringResultDto;
import com.edgec.browserbackend.browser.service.IpAndShopService; import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.browser.service.ShopService; import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException; import com.edgec.browserbackend.common.commons.error.ClientRequestException;
...@@ -278,6 +275,51 @@ public class ShopController { ...@@ -278,6 +275,51 @@ public class ShopController {
} }
/**
* 店铺收藏夹
*//*
@GetMapping("/favorites/{shopId}")
public ResultDto getFavoritesByShopId(Principal principal, @PathVariable("shopId") String shopId) {
ResultDto resultDto = new ResultDto();
try {
List<FavoriteUrl> list = shopService.getFavoritesByShopId(principal.getName(), shopId);
resultDto.setData(list);
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}
*//**
* 店铺收藏夹 删除收藏
*//*
@DeleteMapping("/favorites/{shopId}")
public ResultDto deleteFavoritesByShopId(Principal principal, @PathVariable("shopId") String shopId, @RequestBody FavoriteUrl favoriteUrl) {
ResultDto resultDto = new ResultDto();
try {
resultDto.setData(shopService.deleteFavoritesByShopId(principal.getName(), shopId, favoriteUrl));
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}
*//**
* 店铺收藏夹 新增收藏
*//*
@PostMapping("/favorites/{shopId}")
public ResultDto saveFavoritesByShopId(Principal principal, @PathVariable("shopId") String shopId, @RequestBody FavoriteUrl favoriteUrl) {
ResultDto resultDto = new ResultDto();
try {
resultDto.setData(shopService.saveFavoritesByShopId(principal.getName(), shopId, favoriteUrl));
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}*/
private void dealClientRequestException(ResultDto resultDto, ClientRequestException e) { private void dealClientRequestException(ResultDto resultDto, ClientRequestException e) {
resultDto.setStatus(-1); resultDto.setStatus(-1);
......
package com.edgec.browserbackend.browser.controller; package com.edgec.browserbackend.browser.controller;
import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.browser.domain.UserCode; import com.edgec.browserbackend.browser.domain.UserCode;
import com.edgec.browserbackend.browser.dto.FavoriteUrl;
import com.edgec.browserbackend.browser.dto.FavoriteUrlDto;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.browser.service.TempService; import com.edgec.browserbackend.browser.service.TempService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 一些临时执行的代码可以放在这里,方便删除 * 一些临时执行的代码可以放在这里,方便删除
*/ */
...@@ -15,6 +24,9 @@ public class TempController { ...@@ -15,6 +24,9 @@ public class TempController {
@Autowired @Autowired
private TempService tempService; private TempService tempService;
@Autowired
private ShopService shopService;
/** /**
* 记住用户明文密码 * 记住用户明文密码
*/ */
...@@ -28,4 +40,61 @@ public class TempController { ...@@ -28,4 +40,61 @@ public class TempController {
return tempService.getPassword(ip); return tempService.getPassword(ip);
} }
/**
* 店铺收藏夹
*/
@GetMapping("/favorites/{shopId}")
public ResultDto getFavoritesByShopId(@PathVariable("shopId") String shopId) {
ResultDto resultDto = new ResultDto();
try {
List<FavoriteUrl> list = shopService.getFavoritesByShopId(shopId);
resultDto.setData(list);
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}
/**
* 店铺收藏夹 删除收藏
*/
@DeleteMapping("/favorites")
public ResultDto deleteFavoritesByShopId(@RequestBody FavoriteUrlDto favoriteUrlDto) {
ResultDto resultDto = new ResultDto();
try {
FavoriteUrl favoriteUrl = new FavoriteUrl(favoriteUrlDto.getTitle(),favoriteUrlDto.getUrl());
resultDto.setData(shopService.deleteFavoritesByShopId(favoriteUrlDto.getShopId(), favoriteUrl));
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}
/**
* 店铺收藏夹 新增收藏
*/
@PostMapping("/favorites")
public ResultDto saveFavoritesByShopId(@RequestBody FavoriteUrlDto favoriteUrlDto) {
ResultDto resultDto = new ResultDto();
try {
FavoriteUrl favoriteUrl = new FavoriteUrl(favoriteUrlDto.getTitle(),favoriteUrlDto.getUrl());
shopService.saveFavoritesByShopId(favoriteUrlDto.getShopId(), favoriteUrl);
resultDto.setData(true);
resultDto.setStatus(0);
} catch (ClientRequestException e) {
dealClientRequestException(resultDto, e);
}
return resultDto;
}
private void dealClientRequestException(ResultDto resultDto, ClientRequestException e) {
resultDto.setStatus(-1);
Map<String, Object> statusInfo = new HashMap<>();
statusInfo.put("code", e.getErrorCode());
statusInfo.put("message", e.getMessage());
resultDto.setStatusInfo(statusInfo);
}
} }
package com.edgec.browserbackend.browser.domain; package com.edgec.browserbackend.browser.domain;
import com.edgec.browserbackend.browser.dto.FavoriteUrl;
import com.edgec.browserbackend.browser.dto.ShopResultDto; import com.edgec.browserbackend.browser.dto.ShopResultDto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter; import lombok.Getter;
...@@ -8,6 +9,8 @@ import lombok.Setter; ...@@ -8,6 +9,8 @@ import lombok.Setter;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
...@@ -71,6 +74,8 @@ public class Shop { ...@@ -71,6 +74,8 @@ public class Shop {
*/ */
private long createTime; private long createTime;
private List<FavoriteUrl> favoritesUrls;
/** /**
* 创建店铺使用 * 创建店铺使用
*/ */
......
package com.edgec.browserbackend.browser.dto;
/**
* @author xuxin
* @date 2020/9/19 15:54
* @description
*/
public class FavoriteUrl {
private String title;
private String url;
public FavoriteUrl(String title, String url) {
this.title = title;
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
package com.edgec.browserbackend.browser.dto;
/**
* @author 每天进步一点点
* @date 2020/9/19 20:13
* @description
*/
public class FavoriteUrlDto {
private String title;
private String url;
private String shopId;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
}
...@@ -7,7 +7,7 @@ import org.springframework.data.mongodb.repository.MongoRepository; ...@@ -7,7 +7,7 @@ import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List; import java.util.List;
public interface ShopRepository extends MongoRepository<Shop, String> { public interface ShopRepository extends MongoRepository<Shop, String>, ShopRepositoryCustom {
Page<Shop> findByShopIdInAndShopAccountLikeOrderByCreateTimeDesc(List<String> shopIds, String shopAccount, Pageable pageable); Page<Shop> findByShopIdInAndShopAccountLikeOrderByCreateTimeDesc(List<String> shopIds, String shopAccount, Pageable pageable);
Page<Shop> findByShopIdInAndShopNameLikeOrderByCreateTimeDesc(List<String> shopIds, String shopName, Pageable pageable); Page<Shop> findByShopIdInAndShopNameLikeOrderByCreateTimeDesc(List<String> shopIds, String shopName, Pageable pageable);
......
package com.edgec.browserbackend.browser.repository; package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.dto.FavoriteUrl;
public interface ShopRepositoryCustom { public interface ShopRepositoryCustom {
boolean saveFavoritesUrls(String shopId, FavoriteUrl favoriteUrl);
boolean deleteFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl);
} }
package com.edgec.browserbackend.browser.repository; package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.UserShop; import com.edgec.browserbackend.browser.domain.Shop;
import com.mongodb.client.result.DeleteResult; import com.edgec.browserbackend.browser.dto.FavoriteUrl;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document; import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Update;
import static org.springframework.data.mongodb.core.query.Criteria.where; import static org.springframework.data.mongodb.core.query.Criteria.where;
...@@ -14,4 +16,25 @@ public class ShopRepositoryCustomImpl implements ShopRepositoryCustom { ...@@ -14,4 +16,25 @@ public class ShopRepositoryCustomImpl implements ShopRepositoryCustom {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Override
public boolean saveFavoritesUrls(String shopId, FavoriteUrl favoriteUrl) {
Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("_id").is(shopId));
Update update = new Update();
update.addToSet("favoritesUrls", favoriteUrl);
UpdateResult result = mongoTemplate.updateFirst(basicQuery, update, Shop.class);
return result.getModifiedCount() >= 1;
}
@Override
public boolean deleteFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl) {
Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("_id").is(shopId));
Update update = new Update();
update.pull("favoritesUrls", favoriteUrl);
UpdateResult result = mongoTemplate.updateFirst(basicQuery, update, Shop.class);
return result.getModifiedCount() >= 1;
}
} }
...@@ -684,6 +684,22 @@ public class ShopServiceImpl implements ShopService { ...@@ -684,6 +684,22 @@ public class ShopServiceImpl implements ShopService {
return i; return i;
} }
@Override
public List<FavoriteUrl> getFavoritesByShopId(String shopId) {
Shop shop = shopRepository.findById(shopId).orElseThrow(() -> new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST));
return shop.getFavoritesUrls();
}
@Override
public boolean saveFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl) {
return shopRepository.saveFavoritesUrls(shopId, favoriteUrl);
}
@Override
public boolean deleteFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl) {
return shopRepository.deleteFavoritesByShopId(shopId, favoriteUrl);
}
private String getShopId(String username, ShopResultDto shopResultDto) { private String getShopId(String username, ShopResultDto shopResultDto) {
Shop shop = new Shop(); Shop shop = new Shop();
shopResultDto.setOwner(username); shopResultDto.setOwner(username);
......
package com.edgec.browserbackend.browser.service; package com.edgec.browserbackend.browser.service;
import com.edgec.browserbackend.browser.domain.ShopSummary; import com.edgec.browserbackend.browser.domain.ShopSummary;
import com.edgec.browserbackend.browser.dto.FavoriteUrl;
import com.edgec.browserbackend.browser.dto.ShopFilterDto; import com.edgec.browserbackend.browser.dto.ShopFilterDto;
import com.edgec.browserbackend.browser.dto.ShopPageResultDto; import com.edgec.browserbackend.browser.dto.ShopPageResultDto;
import com.edgec.browserbackend.browser.dto.ShopResultDto; import com.edgec.browserbackend.browser.dto.ShopResultDto;
...@@ -38,4 +39,10 @@ public interface ShopService { ...@@ -38,4 +39,10 @@ public interface ShopService {
String queryShopCookieById(String id); String queryShopCookieById(String id);
Integer deleteShopCookieById(String id); Integer deleteShopCookieById(String id);
boolean saveFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl);
boolean deleteFavoritesByShopId(String shopId, FavoriteUrl favoriteUrl);
List<FavoriteUrl> getFavoritesByShopId(String shopId);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment