Skip to content

Commit 2cd2ff8

Browse files
MerchantStore api revision
1 parent 308646b commit 2cd2ff8

File tree

42 files changed

+1321
-1012
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1321
-1012
lines changed

sm-core-model/src/main/java/com/salesmanager/core/model/common/Criteria.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22

33
public class Criteria {
44

5-
5+
//legacy pagination
66
private int startIndex = 0;
77
private int maxCount = 0;
8+
//new pagination
9+
private int startPage = 0;
10+
private int pageSize = 10;
11+
private boolean legacyPagination = true;
812
private String code;
913
private String name;
1014
private String language;
@@ -76,6 +80,24 @@ public String getStoreCode() {
7680
public void setStoreCode(String storeCode) {
7781
this.storeCode = storeCode;
7882
}
83+
public int getPageSize() {
84+
return pageSize;
85+
}
86+
public void setPageSize(int pageSize) {
87+
this.pageSize = pageSize;
88+
}
89+
public int getStartPage() {
90+
return startPage;
91+
}
92+
public void setStartPage(int startPage) {
93+
this.startPage = startPage;
94+
}
95+
public boolean isLegacyPagination() {
96+
return legacyPagination;
97+
}
98+
public void setLegacyPagination(boolean legacyPagination) {
99+
this.legacyPagination = legacyPagination;
100+
}
79101

80102

81103

sm-core-model/src/main/java/com/salesmanager/core/model/common/EntityList.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,19 @@ public class EntityList implements Serializable {
1010
*/
1111
private static final long serialVersionUID = 6135941880202635567L;
1212
private int totalCount;
13+
private int totalPage;
1314

1415
public int getTotalCount() {
1516
return totalCount;
1617
}
1718
public void setTotalCount(int totalCount) {
1819
this.totalCount = totalCount;
1920
}
21+
public int getTotalPage() {
22+
return totalPage;
23+
}
24+
public void setTotalPage(int totalPage) {
25+
this.totalPage = totalPage;
26+
}
2027

2128
}
0 Bytes
Binary file not shown.

sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/catalog/PageableCatalogRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface PageableCatalogRepository extends PagingAndSortingRepository<Ca
1111

1212

1313
@Query(value = "select distinct c from Catalog c join fetch c.merchantStore cm where c.id=?1 and (?2 is null or c.code like %?2%)",
14-
countQuery = "select distinct c from Catalog c join c.merchantStore cm where c.id=?1 and (?2 is null or c.code like %?2%)")
14+
countQuery = "select count(c) from Catalog c join c.merchantStore cm where c.id=?1 and (?2 is null or c.code like %?2%)")
1515
Page<Catalog> listByStore(Integer storeId, String code, Pageable pageable);
1616

1717

sm-core/src/main/java/com/salesmanager/core/business/repositories/merchant/MerchantRepository.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ public interface MerchantRepository extends JpaRepository<MerchantStore, Integer
1818
MerchantStore findByCode(String code);
1919

2020
@Query("select m from MerchantStore m left join fetch m.parent mp left join fetch m.country mc left join fetch m.currency mc left join fetch m.zone mz left join fetch m.defaultLanguage md left join fetch m.languages mls where m.id = ?1")
21-
//@Query("select m from MerchantStore m left join fetch m.country mc left join fetch m.currency mc left join fetch m.zone mz left join fetch m.defaultLanguage md left join fetch m.languages mls where m.id = ?1")
2221
MerchantStore getById(int id);
2322

2423
@Query("select distinct m from MerchantStore m left join fetch m.parent mp left join fetch m.country mc left join fetch m.currency mc left join fetch m.zone mz left join fetch m.defaultLanguage md left join fetch m.languages mls where mp.code = ?1")

sm-core/src/main/java/com/salesmanager/core/business/repositories/merchant/MerchantRepositoryImpl.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,26 @@ public GenericEntityList listByCriteria(MerchantStoreCriteria criteria) throws S
7272
GenericEntityList entityList = new GenericEntityList();
7373
entityList.setTotalCount(count.intValue());
7474

75-
if (criteria.getMaxCount() > 0) {
76-
77-
q.setFirstResult(criteria.getStartIndex());
78-
if (criteria.getMaxCount() < count.intValue()) {
79-
q.setMaxResults(criteria.getMaxCount());
80-
} else {
81-
q.setMaxResults(count.intValue());
82-
}
75+
if(criteria.isLegacyPagination()) {
76+
if (criteria.getMaxCount() > 0) {
77+
q.setFirstResult(criteria.getStartIndex());
78+
if (criteria.getMaxCount() < count.intValue()) {
79+
q.setMaxResults(criteria.getMaxCount());
80+
} else {
81+
q.setMaxResults(count.intValue());
82+
}
83+
}
84+
} else {
85+
q.setFirstResult((criteria.getStartPage()-1) * criteria.getPageSize());
86+
q.setMaxResults(criteria.getPageSize());
87+
int lastPageNumber = (int) ((count.intValue() / criteria.getPageSize()) + 1);
88+
entityList.setTotalPage(lastPageNumber);
8389
}
8490

8591
List<MerchantStore> stores = q.getResultList();
8692
entityList.setList(stores);
8793

94+
8895
return entityList;
8996

9097

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.salesmanager.core.business.repositories.merchant;
2+
3+
import org.springframework.data.domain.Page;
4+
import org.springframework.data.domain.Pageable;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.PagingAndSortingRepository;
7+
8+
import com.salesmanager.core.model.merchant.MerchantStore;
9+
10+
public interface PageableMerchantRepository extends PagingAndSortingRepository<MerchantStore, Long> {
11+
12+
/*
13+
* List by parent store
14+
*/
15+
@Query(value = "select distinct m from MerchantStore m left join fetch m.parent mp left join fetch m.country mc left join fetch m.currency mc left join fetch m.zone mz left join fetch m.defaultLanguage md left join fetch m.languages mls where mp.code = ?1",
16+
countQuery = "select count(distinct m) from MerchantStore m join m.parent mp where mp.code = ?1")
17+
Page<MerchantStore> listByStore(String code, Pageable pageable);
18+
19+
20+
@Query(value = "select distinct m from MerchantStore m left join fetch m.parent mp left join fetch m.country mc left join fetch m.currency mc left join fetch m.zone mz left join fetch m.defaultLanguage md left join fetch m.languages mls",
21+
countQuery = "select count(distinct m) from MerchantStore m join m.parent")
22+
Page<MerchantStore> listAll(String storeName, Pageable pageable);
23+
24+
25+
26+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.salesmanager.core.business.repositories.user;
2+
3+
import org.springframework.data.domain.Page;
4+
import org.springframework.data.domain.Pageable;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.PagingAndSortingRepository;
7+
8+
import com.salesmanager.core.model.user.User;
9+
10+
public interface PageableUserRepository extends PagingAndSortingRepository<User, Long> {
11+
12+
@Query(value = "select distinct u from User as u left join fetch u.groups ug left join fetch ug.permissions ugp left join fetch u.defaultLanguage ud join fetch u.merchantStore um where um.code=?1 and (?2 is null or u.adminName like %?2%)",
13+
countQuery = "select count(distinct u) from User as u join u.groups ug join ug.permissions ugp join u.merchantStore um where um.code=?1 and (?2 is null or u.adminName like %?2%)")
14+
Page<User> listByStore(String store, String userName, Pageable pageable);
15+
16+
@Query(value = "select distinct u from User as u left join fetch u.groups ug left join fetch ug.permissions ugp left join fetch u.defaultLanguage ud join fetch u.merchantStore um where (?1 is null or u.adminName like %?1%)",
17+
countQuery = "select count(distinct u) from User as u join u.groups ug join ug.permissions ugp join u.merchantStore um where (?1 is null or u.adminName like %?1%)")
18+
Page<User> listAll(String userName, Pageable pageable);
19+
20+
21+
}

sm-core/src/main/java/com/salesmanager/core/business/services/merchant/MerchantStoreService.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.salesmanager.core.business.services.merchant;
22

3-
import java.util.List;
3+
import java.util.Optional;
4+
5+
import org.springframework.data.domain.Page;
6+
7+
48
import com.salesmanager.core.business.exception.ServiceException;
59
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService;
610
import com.salesmanager.core.model.common.GenericEntityList;
@@ -15,7 +19,11 @@ MerchantStore getMerchantStore(String merchantStoreCode)
1519

1620
MerchantStore getByCode(String code) throws ServiceException ;
1721

18-
List<MerchantStore> listChildren(String code) throws ServiceException;
22+
//List<MerchantStore> listChildren(String code) throws ServiceException;
23+
24+
Page<MerchantStore> listAll(Optional<String> storeName, int page, int count) throws ServiceException;
25+
26+
Page<MerchantStore> listChildren(String code, int page, int count) throws ServiceException;
1927

2028
boolean existByCode(String code);
2129

sm-core/src/main/java/com/salesmanager/core/business/services/merchant/MerchantStoreServiceImpl.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
package com.salesmanager.core.business.services.merchant;
22

3-
import java.util.List;
3+
import java.util.Optional;
4+
45
import javax.inject.Inject;
56

7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.data.domain.Page;
9+
import org.springframework.data.domain.PageRequest;
10+
import org.springframework.data.domain.Pageable;
611
import org.springframework.stereotype.Service;
712

13+
814
import com.salesmanager.core.business.exception.ServiceException;
915
import com.salesmanager.core.business.repositories.merchant.MerchantRepository;
16+
import com.salesmanager.core.business.repositories.merchant.PageableMerchantRepository;
1017
import com.salesmanager.core.business.services.catalog.product.type.ProductTypeService;
1118
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl;
1219
import com.salesmanager.core.model.common.GenericEntityList;
@@ -22,6 +29,9 @@ public class MerchantStoreServiceImpl extends SalesManagerEntityServiceImpl<Inte
2229
@Inject
2330
protected ProductTypeService productTypeService;
2431

32+
@Autowired
33+
private PageableMerchantRepository pageableMerchantRepository;
34+
2535

2636

2737
private MerchantRepository merchantRepository;
@@ -64,10 +74,22 @@ public GenericEntityList<MerchantStore> getByCriteria(MerchantStoreCriteria crit
6474

6575

6676
@Override
67-
public List<MerchantStore> listChildren(String code) throws ServiceException {
68-
return merchantRepository.getByParent(code);
77+
public Page<MerchantStore> listChildren(String code,int page, int count) throws ServiceException {
78+
Pageable pageRequest = new PageRequest(page, count);
79+
return pageableMerchantRepository.listByStore(code, pageRequest);
6980
}
7081

82+
83+
@Override
84+
public Page<MerchantStore> listAll(Optional<String> storeName, int page, int count) throws ServiceException {
85+
String store = null;
86+
if(storeName != null && storeName.isPresent()) {
87+
store = storeName.get();
88+
}
89+
Pageable pageRequest = new PageRequest(page, count);
90+
return pageableMerchantRepository.listAll(store, pageRequest);
91+
}
92+
7193

7294
/* @Override
7395
public void delete(MerchantStore merchant) throws ServiceException {

sm-core/src/main/java/com/salesmanager/core/business/services/user/UserService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.salesmanager.core.business.services.user;
22

33
import java.util.List;
4+
5+
import org.springframework.data.domain.Page;
6+
47
import com.salesmanager.core.business.exception.ServiceException;
58
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService;
69
import com.salesmanager.core.model.common.Criteria;
@@ -29,7 +32,10 @@ public interface UserService extends SalesManagerEntityService<Long, User> {
2932

3033
User findByStore(Long userId, String storeCode) throws ServiceException;
3134

35+
@Deprecated
3236
GenericEntityList<User> listByCriteria(Criteria criteria) throws ServiceException;
37+
38+
Page<User> listByCriteria(Criteria criteria, int page, int count) throws ServiceException;
3339

3440

3541

sm-core/src/main/java/com/salesmanager/core/business/services/user/UserServiceImpl.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22

33
import java.util.List;
44
import javax.inject.Inject;
5+
6+
import org.apache.commons.lang3.StringUtils;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.data.domain.Page;
9+
import org.springframework.data.domain.PageRequest;
10+
import org.springframework.data.domain.Pageable;
11+
512
import com.salesmanager.core.business.exception.ServiceException;
13+
import com.salesmanager.core.business.repositories.user.PageableUserRepository;
614
import com.salesmanager.core.business.repositories.user.UserRepository;
715
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl;
816
import com.salesmanager.core.model.common.Criteria;
@@ -17,6 +25,9 @@ public class UserServiceImpl extends SalesManagerEntityServiceImpl<Long, User>
1725

1826

1927
private UserRepository userRepository;
28+
29+
@Autowired
30+
private PageableUserRepository pageableUserRepository;
2031

2132
@Inject
2233
public UserServiceImpl(UserRepository userRepository) {
@@ -82,4 +93,23 @@ public User getByUserName(String userName, String storeCode) throws ServiceExcep
8293
return userRepository.findByUserName(userName, storeCode);
8394
}
8495

96+
97+
@Override
98+
public Page<User> listByCriteria(Criteria criteria, int page, int count) throws ServiceException {
99+
100+
Pageable pageRequest = new PageRequest(page, count);
101+
Page<User> users = null;
102+
if(StringUtils.isBlank(criteria.getStoreCode())) {
103+
104+
users = pageableUserRepository.listAll(criteria.getUser(), pageRequest);
105+
} else {
106+
107+
users = pageableUserRepository.listByStore(criteria.getStoreCode(), criteria.getUser(), pageRequest);
108+
}
109+
110+
111+
return users;
112+
}
113+
114+
85115
}

0 commit comments

Comments
 (0)