|
@@ -31,6 +31,7 @@ import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
@@ -43,8 +44,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
*/
|
|
|
@Service
|
|
@Service
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
-public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
|
|
-{
|
|
|
|
|
|
|
+public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private FsStoreScrmMapper fsStoreMapper;
|
|
private FsStoreScrmMapper fsStoreMapper;
|
|
|
|
|
|
|
@@ -56,6 +56,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ConfigUtil configUtil;
|
|
private ConfigUtil configUtil;
|
|
|
|
|
|
|
|
|
|
+ private static final String MERCHANT_PREFIX = "YJB";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 查询店铺管理
|
|
* 查询店铺管理
|
|
@@ -64,8 +65,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 店铺管理
|
|
* @return 店铺管理
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public FsStoreScrm selectFsStoreByStoreId(Long storeId)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ public FsStoreScrm selectFsStoreByStoreId(Long storeId) {
|
|
|
return fsStoreMapper.selectFsStoreByStoreId(storeId);
|
|
return fsStoreMapper.selectFsStoreByStoreId(storeId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -81,8 +81,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 店铺管理
|
|
* @return 店铺管理
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public List<FsStoreScrm> selectFsStoreList(FsStoreScrm fsStore)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ public List<FsStoreScrm> selectFsStoreList(FsStoreScrm fsStore) {
|
|
|
return fsStoreMapper.selectFsStoreList(fsStore);
|
|
return fsStoreMapper.selectFsStoreList(fsStore);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -93,21 +92,62 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 结果
|
|
* @return 结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public Long insertFsStore(FsStoreScrm fsStore)
|
|
|
|
|
- {
|
|
|
|
|
- if (fsStore.getAccount()!=null){
|
|
|
|
|
|
|
+ public Long insertFsStore(FsStoreScrm fsStore) {
|
|
|
|
|
+ if (fsStore.getAccount() != null) {
|
|
|
FsStoreScrm fs = fsStoreMapper.selectFsStoreByAccount(fsStore.getAccount());
|
|
FsStoreScrm fs = fsStoreMapper.selectFsStoreByAccount(fsStore.getAccount());
|
|
|
- if (fs!=null){
|
|
|
|
|
|
|
+ if (fs != null) {
|
|
|
throw new CustomException("店铺账号重复");
|
|
throw new CustomException("店铺账号重复");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
StoreMD5PasswordEncoder storeMD5PasswordEncoder = new StoreMD5PasswordEncoder();
|
|
StoreMD5PasswordEncoder storeMD5PasswordEncoder = new StoreMD5PasswordEncoder();
|
|
|
fsStore.setPassword(storeMD5PasswordEncoder.encode("XyzAbc~12"));
|
|
fsStore.setPassword(storeMD5PasswordEncoder.encode("XyzAbc~12"));
|
|
|
fsStore.setCreateTime(DateUtils.getNowDate());
|
|
fsStore.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
+ //生成商家id
|
|
|
|
|
+ String merchantId = generateMerchantId();
|
|
|
|
|
+ //生成店铺id
|
|
|
|
|
+ String sequence = generateStoreSequence(merchantId);
|
|
|
|
|
+ fsStore.setMerchantId(merchantId);
|
|
|
|
|
+ fsStore.setStoreSeq(sequence);
|
|
|
fsStoreMapper.insertFsStore(fsStore);
|
|
fsStoreMapper.insertFsStore(fsStore);
|
|
|
return fsStore.getStoreId();
|
|
return fsStore.getStoreId();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 生成商家ID:YJB202510180001
|
|
|
|
|
+ * 格式:前缀 + 年月日 + 4位序列号
|
|
|
|
|
+ */
|
|
|
|
|
+ public String generateMerchantId() {
|
|
|
|
|
+ // 获取当天日期
|
|
|
|
|
+ String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
|
|
+
|
|
|
|
|
+ // 查询当天已生成的商家数量
|
|
|
|
|
+ Long todayCount = fsStoreMapper.countMerchantsByDatePrefix(MERCHANT_PREFIX + datePart);
|
|
|
|
|
+
|
|
|
|
|
+ // 生成序号 (从0001开始)
|
|
|
|
|
+ Long sequence = (todayCount == null) ? 1L : todayCount + 1;
|
|
|
|
|
+ String sequencePart = String.format("%04d", sequence);
|
|
|
|
|
+
|
|
|
|
|
+ return MERCHANT_PREFIX + datePart + sequencePart;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 生成店铺序号:年月日 + 当天第几家店
|
|
|
|
|
+ * 格式:202510180001
|
|
|
|
|
+ */
|
|
|
|
|
+ public String generateStoreSequence(String merchantId) {
|
|
|
|
|
+ // 获取当天日期
|
|
|
|
|
+ String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
|
|
+
|
|
|
|
|
+ // 查询当天已生成的店铺数量
|
|
|
|
|
+ Long todayCount = fsStoreMapper.countByStoreSeqPrefix(merchantId, datePart);
|
|
|
|
|
+
|
|
|
|
|
+ // 生成序号 (从1开始)
|
|
|
|
|
+ Long sequence = (todayCount == null) ? 1L : todayCount + 1;
|
|
|
|
|
+ String sequencePart = String.format("%04d", sequence);
|
|
|
|
|
+
|
|
|
|
|
+ return datePart + sequencePart;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 修改店铺管理
|
|
* 修改店铺管理
|
|
|
*
|
|
*
|
|
@@ -115,8 +155,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 结果
|
|
* @return 结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public int updateFsStore(FsStoreScrm fsStore)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ public int updateFsStore(FsStoreScrm fsStore) {
|
|
|
fsStore.setUpdateTime(DateUtils.getNowDate());
|
|
fsStore.setUpdateTime(DateUtils.getNowDate());
|
|
|
storeAuditLogUtil.addOperLog(fsStore.getStoreId());
|
|
storeAuditLogUtil.addOperLog(fsStore.getStoreId());
|
|
|
FsStoreScrm oldFsStore = fsStoreMapper.selectFsStoreByStoreId(fsStore.getStoreId());
|
|
FsStoreScrm oldFsStore = fsStoreMapper.selectFsStoreByStoreId(fsStore.getStoreId());
|
|
@@ -127,7 +166,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
Map<String, Object> diff = getDiff(oldFsStore, fsStore);
|
|
Map<String, Object> diff = getDiff(oldFsStore, fsStore);
|
|
|
Set<String> diff_columns = diff.keySet();
|
|
Set<String> diff_columns = diff.keySet();
|
|
|
JSONArray storeColumns = configUtil.generateConfigByKey("medicalMall.func.switch").getJSONArray("storeColumns");
|
|
JSONArray storeColumns = configUtil.generateConfigByKey("medicalMall.func.switch").getJSONArray("storeColumns");
|
|
|
- if(StringUtils.isNotEmpty(storeColumns)){
|
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(storeColumns)) {
|
|
|
//判断diff_columns是否在storeColumns中,不是则将isAudit设置为0
|
|
//判断diff_columns是否在storeColumns中,不是则将isAudit设置为0
|
|
|
for (String column : diff_columns) {
|
|
for (String column : diff_columns) {
|
|
|
if (!storeColumns.contains(column)) {
|
|
if (!storeColumns.contains(column)) {
|
|
@@ -135,7 +174,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }else{
|
|
|
|
|
|
|
+ } else {
|
|
|
fsStore.setIsAudit(0);
|
|
fsStore.setIsAudit(0);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -146,10 +185,10 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
|
|
|
|
|
//验证资质日期是否正常
|
|
//验证资质日期是否正常
|
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
|
- if(fsStore.getBusinessLicenseExpireEnd().isBefore(today) || fsStore.getDrugLicenseExpiryEnd().isBefore(today)
|
|
|
|
|
|
|
+ if (fsStore.getBusinessLicenseExpireEnd().isBefore(today) || fsStore.getDrugLicenseExpiryEnd().isBefore(today)
|
|
|
|| fsStore.getMedicalDevice2ExpiryEnd().isBefore(today) || fsStore.getMedicalLicenseExpiryEnd().isBefore(today) || fsStore.getStatus() == 0) {
|
|
|| fsStore.getMedicalDevice2ExpiryEnd().isBefore(today) || fsStore.getMedicalLicenseExpiryEnd().isBefore(today) || fsStore.getStatus() == 0) {
|
|
|
fsStore.setStatus(0);
|
|
fsStore.setStatus(0);
|
|
|
- }else {
|
|
|
|
|
|
|
+ } else {
|
|
|
fsStore.setStatus(1);
|
|
fsStore.setStatus(1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -191,9 +230,8 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 结果
|
|
* @return 结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public int deleteFsStoreByStoreIds(Long[] storeIds)
|
|
|
|
|
- {
|
|
|
|
|
- storeAuditLogUtil.addBatchAuditArray(storeIds,null,null);
|
|
|
|
|
|
|
+ public int deleteFsStoreByStoreIds(Long[] storeIds) {
|
|
|
|
|
+ storeAuditLogUtil.addBatchAuditArray(storeIds, null, null);
|
|
|
return fsStoreMapper.deleteFsStoreByStoreIds(storeIds);
|
|
return fsStoreMapper.deleteFsStoreByStoreIds(storeIds);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -204,8 +242,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
* @return 结果
|
|
* @return 结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public int deleteFsStoreByStoreId(Long storeId)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ public int deleteFsStoreByStoreId(Long storeId) {
|
|
|
return fsStoreMapper.deleteFsStoreByStoreId(storeId);
|
|
return fsStoreMapper.deleteFsStoreByStoreId(storeId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -213,23 +250,23 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
@Transactional
|
|
@Transactional
|
|
|
public int updateFsStoreAudit(FsStoreAuditParam fsStore) {
|
|
public int updateFsStoreAudit(FsStoreAuditParam fsStore) {
|
|
|
|
|
|
|
|
- FsStoreScrm fsStoreScrm=fsStoreMapper.selectFsStoreByStoreId(fsStore.getStoreId());
|
|
|
|
|
- if(fsStoreScrm == null){
|
|
|
|
|
|
|
+ FsStoreScrm fsStoreScrm = fsStoreMapper.selectFsStoreByStoreId(fsStore.getStoreId());
|
|
|
|
|
+ if (fsStoreScrm == null) {
|
|
|
throw new ServiceException("操作失败,审核店铺数据不存在!");
|
|
throw new ServiceException("操作失败,审核店铺数据不存在!");
|
|
|
}
|
|
}
|
|
|
- FsStoreScrm updateStore=new FsStoreScrm();
|
|
|
|
|
|
|
+ FsStoreScrm updateStore = new FsStoreScrm();
|
|
|
updateStore.setStoreId(fsStore.getStoreId());
|
|
updateStore.setStoreId(fsStore.getStoreId());
|
|
|
updateStore.setIsAudit(fsStore.getIsAudit());
|
|
updateStore.setIsAudit(fsStore.getIsAudit());
|
|
|
- if(fsStoreScrm.getStatus() == 0){
|
|
|
|
|
|
|
+ if (fsStoreScrm.getStatus() == 0) {
|
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
|
- if(fsStoreScrm.getBusinessLicenseExpireEnd().isAfter(today) && fsStoreScrm.getDrugLicenseExpiryEnd().isAfter(today)
|
|
|
|
|
|
|
+ if (fsStoreScrm.getBusinessLicenseExpireEnd().isAfter(today) && fsStoreScrm.getDrugLicenseExpiryEnd().isAfter(today)
|
|
|
&& fsStoreScrm.getMedicalDevice2ExpiryEnd().isAfter(today) && fsStoreScrm.getMedicalLicenseExpiryEnd().isAfter(today)) {
|
|
&& fsStoreScrm.getMedicalDevice2ExpiryEnd().isAfter(today) && fsStoreScrm.getMedicalLicenseExpiryEnd().isAfter(today)) {
|
|
|
updateStore.setStatus(1);
|
|
updateStore.setStatus(1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
fsStoreMapper.updateFsStore(updateStore);
|
|
fsStoreMapper.updateFsStore(updateStore);
|
|
|
//更新日志
|
|
//更新日志
|
|
|
- storeAuditLogUtil.addAudit(fsStore.getStoreId(),fsStore.getReason(),fsStore.getAttachImage());
|
|
|
|
|
|
|
+ storeAuditLogUtil.addAudit(fsStore.getStoreId(), fsStore.getReason(), fsStore.getAttachImage());
|
|
|
return 1;
|
|
return 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -237,7 +274,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
public int updateFsStoreLogo(FsStoreScrm fsStore) {
|
|
public int updateFsStoreLogo(FsStoreScrm fsStore) {
|
|
|
|
|
|
|
|
|
|
|
|
|
- return fsStoreMapper.updateFsStore(fsStore);
|
|
|
|
|
|
|
+ return fsStoreMapper.updateFsStore(fsStore);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -281,7 +318,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
fsStoreScrm.setIsAudit(1);//审核通过
|
|
fsStoreScrm.setIsAudit(1);//审核通过
|
|
|
//List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreList( fsStoreScrm);
|
|
//List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreList( fsStoreScrm);
|
|
|
// List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreList(fsStoreScrm);
|
|
// List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreList(fsStoreScrm);
|
|
|
- List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreListByProduct(fsStoreScrm); //查询有商品的列表
|
|
|
|
|
|
|
+ List<FsStoreScrm> storeList = fsStoreMapper.selectFsStoreListByProduct(fsStoreScrm); //查询有商品的列表
|
|
|
return storeList.stream().map(store -> {
|
|
return storeList.stream().map(store -> {
|
|
|
FsStoreProductScrm fsStoreProductScrm = new FsStoreProductScrm();
|
|
FsStoreProductScrm fsStoreProductScrm = new FsStoreProductScrm();
|
|
|
fsStoreProductScrm.setStoreId(store.getStoreId());
|
|
fsStoreProductScrm.setStoreId(store.getStoreId());
|
|
@@ -301,7 +338,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<Map<String, String>> getStoreColumns() {
|
|
public List<Map<String, String>> getStoreColumns() {
|
|
|
- List<Map<String, String> > list = fsStoreMapper.getStoreColumns();
|
|
|
|
|
|
|
+ List<Map<String, String>> list = fsStoreMapper.getStoreColumns();
|
|
|
List<Map<String, String>> result = new ArrayList<>();
|
|
List<Map<String, String>> result = new ArrayList<>();
|
|
|
|
|
|
|
|
for (Map<String, String> column : list) {
|
|
for (Map<String, String> column : list) {
|
|
@@ -325,6 +362,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
public List<String> getStoreAgreementExpiryTips() {
|
|
public List<String> getStoreAgreementExpiryTips() {
|
|
|
return fsStoreMapper.queryValidStoreAgreementExpiryTips();
|
|
return fsStoreMapper.queryValidStoreAgreementExpiryTips();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public FsStoreDetailsScrmVo getStoreInfoByStoreId(Long storeId) {
|
|
public FsStoreDetailsScrmVo getStoreInfoByStoreId(Long storeId) {
|
|
|
return fsStoreMapper.selectStoreInfoByStoreId(storeId);
|
|
return fsStoreMapper.selectStoreInfoByStoreId(storeId);
|
|
@@ -346,7 +384,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
try {
|
|
try {
|
|
|
// 仅当开启审核功能时才进行判断
|
|
// 仅当开启审核功能时才进行判断
|
|
|
if (Boolean.TRUE.equals(isAuditEnabled) && oldFsStore.getIsAudit() == 1) {
|
|
if (Boolean.TRUE.equals(isAuditEnabled) && oldFsStore.getIsAudit() == 1) {
|
|
|
- if(getFullDiff(oldFsStore, fsStore)){
|
|
|
|
|
|
|
+ if (getFullDiff(oldFsStore, fsStore)) {
|
|
|
fsStore.setIsAudit(0);
|
|
fsStore.setIsAudit(0);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
@@ -361,10 +399,10 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
updateStore.setUpdateTime(DateUtils.getNowDate());
|
|
updateStore.setUpdateTime(DateUtils.getNowDate());
|
|
|
//验证资质日期是否正常
|
|
//验证资质日期是否正常
|
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
|
|
- if(fsStore.getBusinessLicenseExpireEnd().isBefore(today) || fsStore.getDrugLicenseExpiryEnd().isBefore(today)
|
|
|
|
|
|
|
+ if (fsStore.getBusinessLicenseExpireEnd().isBefore(today) || fsStore.getDrugLicenseExpiryEnd().isBefore(today)
|
|
|
|| fsStore.getMedicalDevice2ExpiryEnd().isBefore(today) || fsStore.getMedicalLicenseExpiryEnd().isBefore(today)) {
|
|
|| fsStore.getMedicalDevice2ExpiryEnd().isBefore(today) || fsStore.getMedicalLicenseExpiryEnd().isBefore(today)) {
|
|
|
updateStore.setStatus(0);
|
|
updateStore.setStatus(0);
|
|
|
- }else {
|
|
|
|
|
|
|
+ } else {
|
|
|
updateStore.setStatus(1);
|
|
updateStore.setStatus(1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -376,7 +414,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
log.info("定时任务店铺资质过期更新状态--------------------------start{}");
|
|
log.info("定时任务店铺资质过期更新状态--------------------------start{}");
|
|
|
//获取资质过期商铺
|
|
//获取资质过期商铺
|
|
|
List<Long> storeIds = fsStoreMapper.getStoreQualificationExpiredInfo();
|
|
List<Long> storeIds = fsStoreMapper.getStoreQualificationExpiredInfo();
|
|
|
- if(!storeIds.isEmpty()){
|
|
|
|
|
|
|
+ if (!storeIds.isEmpty()) {
|
|
|
//更新商铺状态】
|
|
//更新商铺状态】
|
|
|
fsStoreMapper.batchUpdateStoreStatusById(storeIds);
|
|
fsStoreMapper.batchUpdateStoreStatusById(storeIds);
|
|
|
}
|
|
}
|
|
@@ -398,7 +436,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService
|
|
|
Object newValue = oldField.get(newObj);
|
|
Object newValue = oldField.get(newObj);
|
|
|
Object oldValue = getFieldValue(oldObj, fieldName);
|
|
Object oldValue = getFieldValue(oldObj, fieldName);
|
|
|
if (!Objects.equals(oldValue, newValue)) {
|
|
if (!Objects.equals(oldValue, newValue)) {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return false;
|
|
return false;
|