Commit 57632dae authored by renjie's avatar renjie

group

parent b79142ac
......@@ -51,7 +51,7 @@ public enum AccountErrorCode implements ErrorCode {
/** alipay errors */
ALIPAYERROR(ACCOUNT_BASE+130, "Alipay order generation error"),
NOPERMISSION(SHOP_BASE+200, "You have no right to do this operarion");
NOPERMISSION(ACCOUNT_BASE+140, "You have no right to do this operarion");
......
package com.edgec.browserbackend.browser.domain;
import com.edgec.browserbackend.browser.dto.Interval;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
@Document(collection = "ipresource")
@JsonIgnoreProperties(ignoreUnknown = true)
public class IpResource {
@Id
private String id;
......@@ -14,12 +17,17 @@ public class IpResource {
private String ipProvider;
private String ipRegion;
private IpStatus ipStatus;
private List<Interval> ports;
private long createdAt;
private long validTime;
private long leftTime;
private String details;
List<String> bindHistory;
private boolean isDeleted;
private String owner;
private String ownerParent;
private String shopId;
private String shopName;
public String getDetails() {
return details;
......@@ -116,4 +124,44 @@ public class IpResource {
public void setDeleted(boolean deleted) {
isDeleted = deleted;
}
public List<Interval> getPorts() {
return ports;
}
public void setPorts(List<Interval> ports) {
this.ports = ports;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getOwnerParent() {
return ownerParent;
}
public void setOwnerParent(String ownerParent) {
this.ownerParent = ownerParent;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
}
......@@ -4,5 +4,6 @@ public enum IpStatus {
NORMAL,
PROTECTION,
EXPIRED,
UNBIND;
UNBIND,
ASSIGN;
}
......@@ -19,11 +19,9 @@ public class Shop {
private String firstGroupId;
private String groupName;
private String link;
private String platform;
private String shopPlatform;
private String ipRegion;
......@@ -42,8 +40,6 @@ public class Shop {
public Shop of(Shop shop) {
if (shop.getFirstGroupId() != null)
this.setFirstGroupId(shop.getFirstGroupId());
if (shop.getGroupName() != null)
this.setGroupName(shop.getGroupName());
if (shop.getIp() != null)
this.setIp(shop.getIp());
if (shop.getIpId() != null)
......@@ -54,8 +50,8 @@ public class Shop {
this.setLink(shop.getLink());
if (shop.getOwner() != null)
this.setOwner(shop.getOwner());
if (shop.getPlatform() != null)
this.setPlatform(shop.getPlatform());
if (shop.getShopPlatform() != null)
this.setShopPlatform(shop.getShopPlatform());
if (shop.getShopName() != null)
this.setShopName(shop.getShopName());
if (shop.getTransferStatus() != null)
......@@ -79,10 +75,6 @@ public class Shop {
return firstGroupId;
}
public String getGroupName() {
return groupName;
}
public String getIpId() {
return ipId;
}
......@@ -99,8 +91,8 @@ public class Shop {
return owner;
}
public String getPlatform() {
return platform;
public String getShopPlatform() {
return shopPlatform;
}
public String getShopName() {
......@@ -123,10 +115,6 @@ public class Shop {
this.firstGroupId = firstGroupId;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public void setIpId(String ipId) {
this.ipId = ipId;
}
......@@ -143,8 +131,8 @@ public class Shop {
this.owner = owner;
}
public void setPlatform(String platform) {
this.platform = platform;
public void setShopPlatform(String shopPlatform) {
this.shopPlatform = shopPlatform;
}
public void setShopName(String shopName) {
......
package com.edgec.browserbackend.browser.dto;
import com.edgec.browserbackend.browser.domain.Group;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class GroupDto {
private String id;
private String groupName;
private String details;
public GroupDto(){
}
public GroupDto(String id, String groupName, String details){
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}
package com.edgec.browserbackend.browser.dto;
import java.util.StringTokenizer;
public class Interval implements Comparable {
private int start;
private int end;
public Interval() {
}
public Interval(String ports) {
StringTokenizer stringTokenizer = new StringTokenizer(ports, "-");
String start = stringTokenizer.nextToken();
this.start = Integer.parseInt(start.trim());
if (stringTokenizer.hasMoreTokens()) {
String end = stringTokenizer.nextToken();
this.end = Integer.parseInt(end.trim());
} else {
this.end = this.start;
}
}
public Interval(int start, int end) {
this.start = start;
this.end = end;
}
/**
* @return interval是否为当前区间的子集
*/
public boolean contains(Interval interval) {
if (this.getStart() <= interval.getStart() && this.getEnd() >= interval.getEnd()) {
return true;
}
return false;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
@Override
public String toString() {
if (start == end) {
return start + "";
}
return start + "-" + end;
}
public static void main(String[] args) {
String key = "100";
String key2 = "100-300";
String key3 = "100 - 300";
Interval interval = new Interval(key);
Interval interval1 = new Interval(key2);
Interval interval2 = new Interval(key3);
System.out.println(interval);
System.out.println(interval1);
System.out.println(interval2);
}
@Override
public int compareTo(Object o) {
if (!(o instanceof Interval)) {
return 0;
}
Interval interval = (Interval) o;
return this.start - interval.start;
}
}
\ No newline at end of file
package com.edgec.browserbackend.browser.dto;
import com.edgec.browserbackend.browser.domain.IpStatus;
import com.edgec.browserbackend.browser.domain.IpType;
import org.springframework.data.annotation.Id;
import java.util.List;
public class IpResourceDto {
private String id;
private String ipAddr;
private IpType ipType;
private String ipProvider;
private String ipRegion;
private IpStatus ipStatus;
private List<Interval> ports;
private long createdAt;
private long validTime;
private long leftTime;
private String details;
List<String> bindHistory;
private String shopId;
private String shopName;
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Interval> getPorts() {
return ports;
}
public void setPorts(List<Interval> ports) {
this.ports = ports;
}
public String getIpRegion() {
return ipRegion;
}
public void setIpRegion(String ipRegion) {
this.ipRegion = ipRegion;
}
public List<String> getBindHistory() {
return bindHistory;
}
public void setBindHistory(List<String> bindHistory) {
this.bindHistory = bindHistory;
}
public String getIpProvider() {
return ipProvider;
}
public void setIpProvider(String ipProvider) {
this.ipProvider = ipProvider;
}
public String getIpAddr() {
return ipAddr;
}
public void setIpAddr(String ipAddr) {
this.ipAddr = ipAddr;
}
public long getValidTime() {
return validTime;
}
public void setValidTime(long validTime) {
this.validTime = validTime;
}
public long getLeftTime() {
return leftTime;
}
public void setLeftTime(long leftTime) {
this.leftTime = leftTime;
}
public long getCreatedAt() {
return createdAt;
}
public void setCreatedAt(long createdAt) {
this.createdAt = createdAt;
}
public IpType getIpType() {
return ipType;
}
public void setIpType(IpType ipType) {
this.ipType = ipType;
}
public IpStatus getIpStatus() {
return ipStatus;
}
public void setIpStatus(IpStatus ipStatus) {
this.ipStatus = ipStatus;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
}
package com.edgec.browserbackend.browser.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.ArrayList;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
public class IpResourceRequestDto {
private String name;
private String region;
private String logintype = "password";
private int period = 1;
private String unit="month";
private int amount = 1;
private boolean autorenew = false;
private int ipkeptperiod = 0;
private String instanceSpecKey;
private String imageKey;
private String provider="aliyun";
private List<String> ports;
private String system = "linux";
private List<String> iplist = new ArrayList<>();
}
package com.edgec.browserbackend.browser.dto;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.Shop;
import com.edgec.browserbackend.browser.domain.TransferStatus;
import java.util.List;
public class ShopDto {
private String id;
private String shopName;
private String owner;
private TransferStatus transferStatus;
private String firstGroupId;
private String groupName;
private String link;
private String shopPlatform;
private String shopAccount;
private String shopPassword;
private IpResource ipResources;
public static ShopDto of(Shop shop, IpResource ipResources) {
ShopDto shopDto = new ShopDto();
shopDto.setId(shop.getId());
if (shop.getShopName() != null)
shopDto.setShopName(shop.getShopName());
if (shop.getShopPlatform() != null)
shopDto.setShopPlatform(shop.getShopPlatform());
if (shop.getShopPassword() != null)
shopDto.setShopPassword(shop.getShopPassword());
if (shop.getFirstGroupId() != null)
shopDto.setFirstGroupId(shop.getFirstGroupId());
if (shop.getTransferStatus() != null)
shopDto.setTransferStatus(shop.getTransferStatus());
if (shop.getOwner() != null)
shopDto.setOwner(shop.getOwner());
if (shop.getLink() != null)
shopDto.setLink(shop.getLink());
if (shop.getGroupName() != null)
shopDto.setGroupName(shop.getGroupName());
shopDto.setIpResources(ipResources);
return shopDto;
}
public String getShopPlatform() {
return shopPlatform;
}
public void setShopPlatform(String shopPlatform) {
this.shopPlatform = shopPlatform;
}
public String getFirstGroupId() {
return firstGroupId;
}
public void setFirstGroupId(String firstGroupId) {
this.firstGroupId = firstGroupId;
}
public String getShopPassword() {
return shopPassword;
}
public void setShopPassword(String shopPassword) {
this.shopPassword = shopPassword;
}
public String getShopAccount() {
return shopAccount;
}
public void setShopAccount(String shopAccount) {
this.shopAccount = shopAccount;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public TransferStatus getTransferStatus() {
return transferStatus;
}
public void setTransferStatus(TransferStatus transferStatus) {
this.transferStatus = transferStatus;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public IpResource getIpResources() {
return ipResources;
}
public void setIpResources(IpResource ipResources) {
this.ipResources = ipResources;
}
}
package com.edgec.browserbackend.browser.dto;
import com.edgec.browserbackend.browser.domain.Shop;
public class ShopDtoMap {
private Shop shop;
private String shopId;
public Shop getShop() {
return shop;
}
public void setShop(Shop shop) {
this.shop = shop;
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
}
......@@ -3,5 +3,8 @@ package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.Group;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface GroupRepository extends MongoRepository<Group, String> {
import java.util.List;
public interface GroupRepository extends MongoRepository<Group, String>, GroupRepositoryCustom {
List<Group> findByOwner(String owner);
}
package com.edgec.browserbackend.browser.repository;
public interface GroupRepositoryCustom {
}
package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.UserShop;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery;
import static org.springframework.data.mongodb.core.query.Criteria.where;
public class GroupRepositoryCustomImpl implements GroupRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
}
......@@ -4,5 +4,5 @@ import com.edgec.browserbackend.browser.domain.IpResource;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface IpResourceRepository extends MongoRepository<IpResource, String> {
IpResource findByIpAddr(String ipAddr);
IpResource findByIpAddrAndDeleted(String ipAddr, boolean isDeleted);
}
package com.edgec.browserbackend.browser.repository;
public interface UserShopRepositoryCustom {
boolean deleteByUsernameAndShopId(String username, String shopId);
void updateGroupId(String groupId_old, String groupId_new);
}
......@@ -2,6 +2,7 @@ package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.account.domain.User;
import com.edgec.browserbackend.account.domain.UserPayment;
import com.edgec.browserbackend.browser.domain.Group;
import com.edgec.browserbackend.browser.domain.UserShop;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
......@@ -29,4 +30,14 @@ public class UserShopRepositoryCustomImpl implements UserShopRepositoryCustom {
else
return true;
}
@Override
public void updateGroupId(String groupId_old, String groupId_new) {
Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("groupId").is(groupId_old));
Update update = new Update();
update.set("groupId", groupId_new);
mongoTemplate.updateFirst(basicQuery, update, UserShop.class);
}
}
package com.edgec.browserbackend.browser.service;
import com.edgec.browserbackend.browser.domain.Group;
import com.edgec.browserbackend.browser.dto.GroupDto;
import java.util.List;
public interface GroupService {
String addGroup(String username, String groupName);
void updateGroup(String username, Group group);
void deleteGroup(String username, String groupId);
List<GroupDto> getGroupList(String username);
}
package com.edgec.browserbackend.browser.service.Impl;
import com.edgec.browserbackend.account.domain.Account;
import com.edgec.browserbackend.account.exception.AccountErrorCode;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.Group;
import com.edgec.browserbackend.browser.dto.GroupDto;
import com.edgec.browserbackend.browser.repository.GroupRepository;
import com.edgec.browserbackend.browser.repository.UserShopRepository;
import com.edgec.browserbackend.browser.service.GroupService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class GroupServiceImpl implements GroupService {
private final Logger logger = LoggerFactory.getLogger(GroupServiceImpl.class);
@Autowired
private GroupRepository groupRepository;
@Autowired
private UserShopRepository userShopRepository;
@Override
public String addGroup(String username, String groupName) {
if (StringUtils.isBlank(username) || StringUtils.isBlank(groupName))
throw new ClientRequestException(BrowserErrorCode.INFORMATIONNOTCOMPELETE);
Group group = new Group();
group.setOwner(username);
group.setGroupName(groupName);
String id;
try {
Group group1 = groupRepository.save(group);
id = group1.getId();
} catch (Exception e) {
logger.error("fail to add group", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
return id;
}
@Override
public void updateGroup(String username, Group group) {
if (group == null || StringUtils.isBlank(username))
throw new ClientRequestException(BrowserErrorCode.INFORMATIONNOTCOMPELETE);
try {
groupRepository.save(group);
} catch (Exception e) {
logger.error("fail to update group", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
@Override
public void deleteGroup(String username, String groupId) {
if (StringUtils.isBlank(username) || StringUtils.isBlank(groupId))
throw new ClientRequestException(BrowserErrorCode.INFORMATIONNOTCOMPELETE);
try {
userShopRepository.updateGroupId(groupId, null);
groupRepository.deleteById(groupId);
} catch (Exception e) {
logger.error("fail to delete group", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
@Override
public List<GroupDto> getGroupList(String username) {
if (StringUtils.isBlank(username))
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
List<Group> groups = groupRepository.findByOwner(username);
if (groups == null)
return new ArrayList<>();
List<GroupDto> groupDtos = new ArrayList<>();
try {
groups.stream().forEach(x -> {
groupDtos.add(new GroupDto(x.getId(), x.getGroupName(), x.getDetails()));
});
} catch (Exception e){
logger.error("fail to delete group", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
return groupDtos;
}
}
......@@ -4,12 +4,17 @@ import com.edgec.browserbackend.account.domain.Account;
import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.dto.FilterDto;
import com.edgec.browserbackend.browser.dto.IpResourceDto;
import com.edgec.browserbackend.browser.dto.IpResourceRequestDto;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.service.IpResourceService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class IpResourceServiceImpl implements IpResourceService {
......@@ -22,11 +27,31 @@ public class IpResourceServiceImpl implements IpResourceService {
@Override
public IpResource getIpResourceByIpAddr(String ipAddr) {
IpResource ipResource = ipResourceRepository.findByIpAddr(ipAddr);
IpResource ipResource = ipResourceRepository.findByIpAddrAndDeleted(ipAddr, false);
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
return ipResource;
}
@Override
public IpResource buyIp(String username, IpResourceRequestDto ipResourceRequestDto) {
return null;
}
@Override
public void renewIp(String username, IpResourceRequestDto ipResourceRequestDto) {
}
@Override
public void deleteIp(String username, String ipAddr) {
}
@Override
public List<IpResourceDto> getIpList(String username, int type, int page, int amount, FilterDto filterDto) {
return null;
}
}
......@@ -9,6 +9,7 @@ import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.Shop;
import com.edgec.browserbackend.browser.domain.UserShop;
import com.edgec.browserbackend.browser.dto.FilterDto;
import com.edgec.browserbackend.browser.dto.ShopDto;
import com.edgec.browserbackend.browser.repository.GroupRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.ShopRepository;
......@@ -89,7 +90,6 @@ public class ShopServiceImpl implements ShopService {
transferShop(username, shop.getId(), shop.getFirstGroupId());
}
Shop shop_old = shopRepository.findById(shop.getId()).orElseGet(null);
if (shop_old == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
......@@ -141,7 +141,7 @@ public class ShopServiceImpl implements ShopService {
if (shop.getIpId() != null && shop.getIp() != null) {
unBindShop(username, shopId);
}
IpResource ipResource = ipResourceRepository.findByIpAddr(ipAddr);
IpResource ipResource = ipResourceRepository.findByIpAddrAndDeleted(ipAddr, false);
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
try {
......@@ -171,13 +171,13 @@ public class ShopServiceImpl implements ShopService {
Shop shop = shopRepository.findById(shopId).orElse(null);
if (shop == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
IpResource ipResource = ipResourceRepository.findByIpAddr(shop.getIp());
IpResource ipResource = ipResourceRepository.findByIpAddrAndDeleted(shop.getIp(), false);
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
try {
shop.setIpRegion(null);
shop.setIp(null);
shop.setIpId(null);
shop.setIpRegion(null);
shopRepository.save(shop);
} catch (Exception e) {
logger.error("fail to unbind", e.getMessage());
......@@ -238,7 +238,7 @@ public class ShopServiceImpl implements ShopService {
}
@Override
public List<Shop> getShopList(String username, String groupId, int page, int amout, FilterDto filterDto) {
public List<ShopDto> getShopList(String username, String groupId, int page, int amout, FilterDto filterDto) {
Account account = accountRepository.findByName(username);
if (account == null) {
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
......@@ -261,7 +261,12 @@ public class ShopServiceImpl implements ShopService {
else
shops = shopRepository.findByIdIn(shopIds);
if (shops == null || shops.size() < 1)
shops = new ArrayList<>();
return shops;
return new ArrayList<>();
List<ShopDto> shopDtos = new ArrayList<>();
shops.stream().forEach(x -> {
IpResource ipResource = ipResourceRepository.findByIpAddrAndDeleted(x.getIp(), false);
shopDtos.add(ShopDto.of(x, ipResource));
});
return shopDtos;
}
}
package com.edgec.browserbackend.browser.service;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.dto.FilterDto;
import com.edgec.browserbackend.browser.dto.IpResourceDto;
import com.edgec.browserbackend.browser.dto.IpResourceRequestDto;
import java.util.List;
public interface IpResourceService {
IpResource getIpResourceByIpAddr(String ipAddr);
IpResource buyIp(String username, IpResourceRequestDto ipResourceRequestDto);
void renewIp(String username, IpResourceRequestDto ipResourceRequestDto);
void deleteIp(String username, String ipAddr);
List<IpResourceDto> getIpList(String username, int type, int page, int amount, FilterDto filterDto);
}
......@@ -2,6 +2,7 @@ package com.edgec.browserbackend.browser.service;
import com.edgec.browserbackend.browser.domain.Shop;
import com.edgec.browserbackend.browser.dto.FilterDto;
import com.edgec.browserbackend.browser.dto.ShopDto;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -24,5 +25,5 @@ public interface ShopService {
void assignShop(String username, String shopId, List<String> users);
List<Shop> getShopList(String username, String groupId, int page, int amount, FilterDto filterDto);
List<ShopDto> getShopList(String username, String groupId, int page, int amount, FilterDto filterDto);
}
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