From 9c9f756145fcf2d71d4e0a15817a87192c7fca84 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 17 七月 2024 11:41:26 +0800
Subject: [PATCH] 提交
---
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java | 459 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 442 insertions(+), 17 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index bf00898..a7813f5 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
+import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -8,16 +9,21 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.admin.request.CategoryImport;
import com.doumee.dao.admin.request.FcodeImport;
import com.doumee.dao.admin.request.ShopImport;
import com.doumee.dao.admin.request.UpdateShopSortDTO;
-import com.doumee.dao.business.ShopMapper;
+import com.doumee.dao.business.CategorySegMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.SegmentsMapper;
+import com.doumee.dao.business.UsersMapper;
import com.doumee.dao.business.join.ShopJoinMapper;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.ShopTree;
import com.doumee.dao.business.vo.ShopTreeVo;
-import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.business.vo.UnitCodeVo;
+import com.doumee.dao.web.reqeust.EditShopDTO;
+import com.doumee.dao.web.reqeust.ShopQueryByLLDTO;
import com.doumee.service.business.ShopService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -26,6 +32,7 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
@@ -34,10 +41,11 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
/**
* 蹇楅偊缁勭粐淇℃伅琛⊿ervice瀹炵幇
@@ -46,11 +54,22 @@
*/
@Service
public class ShopServiceImpl implements ShopService {
-
+ ExecutorService executor = Executors.newFixedThreadPool(1);
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private ShopJoinMapper shopMapper;
+
+ @Autowired
+ private SegmentsMapper segmentsMapper;
+ @Autowired
+ private CategorySegMapper categorySegMapper;
+ @Autowired
+ private UsersMapper usersMapper;
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+ @Autowired
+ private MemberMapper memberMapper;
@Override
public Long create(Shop shop) {
@@ -237,6 +256,8 @@
}
queryWrapper.apply(StringUtils.isNotBlank(pageWrap.getModel().getParentName()),
"(t1.name like '%"+pageWrap.getModel().getParentName()+"%' or t1.code like '%"+pageWrap.getModel().getParentName()+"%' )" );
+ queryWrapper.exists(StringUtils.isNotBlank(pageWrap.getModel().getSiteCode()),
+ "(select c.id from category_seg c where c.isdeleted=0 and (c.org_id=t.code or c.scode =t1.code ) limit 1)" );
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
queryWrapper.orderByDesc(sortData.getProperty());
@@ -244,7 +265,30 @@
queryWrapper.orderByAsc(sortData.getProperty());
}
}
- return PageData.from(shopMapper.selectPage(page, queryWrapper));
+ PageData<Shop> pageData = PageData.from(shopMapper.selectPage(page, queryWrapper));
+ //鏌ヨ缁忚惀鑼冨洿淇℃伅
+ List<CategorySeg> categorySegAllList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda()
+ .isNotNull(CategorySeg::getOrgId)
+ .eq(CategorySeg::getIsdeleted,Constants.ZERO));
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegAllList)){
+ for (Shop shop:pageData.getRecords()) {
+ if(StringUtils.isBlank(shop.getOrgId())){
+ continue;
+ }
+ List<CategorySeg> categorySegList = categorySegAllList.stream().filter(i->i.getOrgId().equals(shop.getOrgId())).collect(Collectors.toList());
+ List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList();
+ List<String> seqNameList = new ArrayList<>();
+ for(CategorySeg model : categorySegList){
+ String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList);
+ if(Objects.nonNull(seqName)){
+ seqNameList.add(seqName);
+ }
+ }
+ shop.setSeqNameList(seqNameList);
+ }
+ }
+
+ return pageData;
}
@Override
@@ -253,6 +297,7 @@
return shopMapper.selectCount(wrapper);
}
@Override
+// @Async
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public String importFcodeBatch(MultipartFile file){
Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP);
@@ -274,7 +319,22 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
}
Date date =new Date();
- List<Shop> updateShops = new ArrayList<>();
+ List<FcodeImport> finalDataList = dataList;
+ Callable<String> task = () -> {
+ dealFcodeDataBiz(finalDataList,date,loginUserInfo);
+ return "寮傛浠诲姟瀹屾垚";
+ };
+ executor.submit(task);
+ return "瀵煎叆鎴愬姛";
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
+
+ private void dealFcodeDataBiz(List<FcodeImport> dataList, Date date, LoginUserInfo loginUserInfo) {
+ try {
for(int i=0;i<dataList.size();i++){
FcodeImport model = dataList.get(i);
if(StringUtils.isBlank(model.getOrgId()) ){
@@ -302,16 +362,258 @@
shopMapper.updateById(shop);
}
- return "瀵煎叆鎴愬姛";
}catch (BusinessException e){
throw e;
}catch (Exception e){
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
}finally {
+ executor.shutdown();
redisTemplate.delete(Constants.RedisKeys.IMPORTING_SHOP);
}
}
+
@Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public String importCategoryBatch(MultipartFile file){
+ Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP);
+ if(importing!=null && importing){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ユ垨鑰呬笂涓嬬骇閲嶇疆浠诲姟姝e湪鎵ц涓紝璇风◢鍚庡啀璇曪紒");
+ }
+ redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_SHOP,true);
+ try {
+ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ ExcelImporter ie = null;
+ List<CategoryImport> dataList =null;
+ try {
+ ie = new ExcelImporter(file,0,0);
+ dataList = ie.getDataList(CategoryImport.class,null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if(dataList == null || dataList.size() ==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+ }
+ Date date =new Date();
+ List<CategoryImport> finalDataList = dataList;
+ Callable<String> task = () -> {
+ dealCategoryDataBiz(finalDataList,date,loginUserInfo);
+ return "寮傛浠诲姟瀹屾垚";
+ };
+ executor.submit(task);
+ return "瀵煎叆鎴愬姛";
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
+
+ @Async
+ public void dealCategoryDataBiz(List<CategoryImport> dataList, Date date, LoginUserInfo loginUserInfo) {
+ try {
+ List<CategorySeg> categorySegList = new ArrayList<>();
+ List<Segments> segmentsList = new ArrayList<>();
+ Map<String,List<String>> siteCodes = new HashMap<>();
+ List<String> orgIdList = new ArrayList<>();
+ for(int i=0;i<dataList.size();i++){
+ CategoryImport model = dataList.get(i);
+ if(StringUtils.isBlank(model.getOrgId()) ){
+ continue;
+ }
+ orgIdList.add(model.getOrgId());
+ dealSegmentData(date,model,loginUserInfo,segmentsList);
+ categorySegList.add(initInsertCategorySeg(date,model,loginUserInfo,siteCodes));
+ }
+ if(orgIdList.size()>0){
+ categorySegMapper.delete(new UpdateWrapper<CategorySeg>().lambda() .in(CategorySeg::getOrgId,orgIdList));
+ }
+ if(siteCodes.size()>0){
+ for(Map.Entry<String ,List<String>> entry : siteCodes.entrySet()){
+ String key = entry.getKey();
+ List<String> codes = entry.getValue();
+ Shop ts = null;
+ String tcode =key.substring(2);
+ if(StringUtils.startsWith(key,"f_")){
+ ts = shopMapper.selectOne(new QueryWrapper<Shop>().lambda()
+ .eq(Shop::getCode,tcode)
+ .eq(Shop::getSecondType,Constants.TWO ));
+ }
+ if(StringUtils.startsWith(key,"f_")){
+ ts = shopMapper.selectOne(new QueryWrapper<Shop>().lambda()
+ .eq(Shop::getCode,tcode)
+ .eq(Shop::getSecondType,Constants.ONE ));
+ }
+ if(ts!=null){
+ ts.setSiteCode(String.join("; ", codes) +";");
+ shopMapper.updateById(ts);
+ }
+ }
+ }
+ if(categorySegList.size()>0){
+ int temp = 0;
+ while(temp < categorySegList.size()){
+ int index;
+ if(temp + 500 <= categorySegList.size()){
+ index = temp+500;
+ }else{
+ index = categorySegList.size();
+ }
+ categorySegMapper.insert(categorySegList.subList(temp,index));
+ temp = index;
+ }
+ }
+ if(segmentsList.size()>0){
+ int temp = 0;
+ while(temp < segmentsList.size()){
+ int index;
+ if(temp + 500 <= segmentsList.size()){
+ index = temp+500;
+ }else{
+ index = segmentsList.size();
+ }
+ segmentsMapper.insert(segmentsList.subList(temp,index));
+ temp = index;
+ }
+ }
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+ }finally {
+ executor.shutdown(); // 鍏抽棴ExecutorService
+ redisTemplate.delete(Constants.RedisKeys.IMPORTING_SHOP);
+ }
+ }
+
+ private void dealSegmentData(Date date, CategoryImport model, LoginUserInfo loginUserInfo, List<Segments> segmentsList) {
+
+ if(StringUtils.isNotBlank(model.getSegId())){
+ //濡傛灉鎴樺尯涓嶄负绌�
+ if(newSegment(model.getSegId(),Constants.ZERO,segmentsList) && segmentsMapper.selectCount(new QueryWrapper<Segments>().lambda()
+ .eq(Segments::getSegmentId,model.getSegId())
+ .eq(Segments::getUnitCode,model.getUnitCode())
+ .eq(Segments::getType,Constants.ZERO)) ==0){
+ segmentsList.add(initSegmentData(model,date,loginUserInfo,Constants.ZERO));
+ }
+ }
+ if(StringUtils.isNotBlank(model.getSegId2())){
+ //濡傛灉鐪佸尯涓嶄负绌�
+ if(newSegment(model.getSegId2(),Constants.ONE,segmentsList) && segmentsMapper.selectCount(new QueryWrapper<Segments>().lambda()
+ .eq(Segments::getSegmentId,model.getSegId2())
+ .eq(Segments::getParentId,model.getSegId())
+ .eq(Segments::getUnitCode,model.getUnitCode())
+ .eq(Segments::getType,Constants.ONE)) ==0){
+ segmentsList.add(initSegmentData(model,date,loginUserInfo,Constants.ONE));
+ }
+ }
+ if(StringUtils.isNotBlank(model.getSegId3())){
+ //濡傛灉鐗囧尯涓嶄负绌�
+ if(newSegment(model.getSegId3(),Constants.TWO,segmentsList) && segmentsMapper.selectCount(new QueryWrapper<Segments>().lambda()
+ .eq(Segments::getSegmentId,model.getSegId3())
+ .eq(Segments::getUnitCode,model.getUnitCode())
+ .eq(Segments::getParentId,model.getSegId2())
+ .eq(Segments::getType,Constants.TWO)) ==0){
+ segmentsList.add(initSegmentData(model,date,loginUserInfo,Constants.TWO));
+ }
+ }
+ }
+
+ private boolean newSegment(String segId2, int one, List<Segments> segmentsList) {
+ for(Segments s : segmentsList){
+ if(StringUtils.equals(s.getSegmentId(),segId2) && Constants.equalsInteger(one,s.getType())){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private Segments initSegmentData(CategoryImport model, Date date, LoginUserInfo loginUserInfo, int type) {
+ Segments data = new Segments();
+ data.setCreateDate(date);
+ data.setEditDate(date);
+ data.setCreator(loginUserInfo.getId());
+ data.setEditor(loginUserInfo.getId());
+ data.setIsdeleted(Constants.ZERO);
+ data.setStatus(Constants.ZERO);
+ data.setUnitCode(model.getUnitCode());
+ data.setType(type);
+ if(type ==Constants.ZERO){
+ data.setName(model.getSegName());
+ data.setSegmentId(model.getSegId());
+ data.setParentId(null);
+ data.setRemark(model.getSegName());
+ }else if(type ==Constants.ONE){
+ data.setName(model.getSegName2());
+ data.setSegmentId(model.getSegId2());
+ data.setParentId(model.getSegId());
+ data.setRemark(model.getSegName()+"/"+model.getSegName2());
+ }else{
+ data.setName(model.getSegName3());
+ data.setSegmentId(model.getSegId3());
+ data.setParentId(model.getSegId2());
+ data.setRemark(model.getSegName()+"/"+model.getSegName2()+"/"+model.getSegName3());
+ }
+ return data;
+ }
+
+ private CategorySeg initInsertCategorySeg(Date date, CategoryImport model, LoginUserInfo loginUserInfo,Map<String,List<String>> siteCodes) {
+ CategorySeg data = new CategorySeg();
+ data.setCreateDate(date);
+ data.setEditDate(date);
+ data.setCreator(loginUserInfo.getId());
+ data.setEditor(loginUserInfo.getId());
+ data.setIsdeleted(Constants.ZERO);
+ data.setOrgId(model.getOrgId());
+ data.setSegId(model.getSegId());
+ data.setSegId2(model.getSegId2());
+ data.setSegId3(model.getSegId3());
+ data.setSegName(model.getSegName());
+ data.setSegName2(model.getSegName2());
+ data.setSegName3(model.getSegName3());
+ data.setShipToAddress(model.getShipToAddress());
+ data.setShipToPhone(model.getShipToPhone());
+ data.setShipToPerson(model.getShipToPerson());
+ data.setBrandId(model.getBrandId());
+ data.setUnitCode(model.getUnitCode());
+ data.setSiteCode(model.getSiteCode());
+ data.setScode(model.getScode());
+ dealSiteCode(model,siteCodes);
+
+ return data;
+ }
+
+ private void dealSiteCode(CategoryImport model, Map<String, List<String>> siteCodes) {
+ List<String> tList = siteCodes.get(model.getOrgId());
+ if(tList == null){
+ tList = new ArrayList<>();
+ }
+ if(isNewSiteCode(model.getSiteCode(),tList)){
+ tList.add(model.getSiteCode());
+ siteCodes.put("f_"+model.getOrgId(),tList);
+ }
+ tList = siteCodes.get(model.getScode());
+ if(tList == null){
+ tList = new ArrayList<>();
+ }
+ if(isNewSiteCode(model.getSiteCode(),tList)){
+ tList.add(model.getSiteCode());
+ siteCodes.put("s_"+model.getScode(),tList);
+ }
+ }
+
+ private boolean isNewSiteCode(String siteCode, List<String> tList) {
+ if(tList!=null){
+ for(String s :tList){
+ if(StringUtils.equals(s,siteCode)){
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ @Override
+// @Async
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public String importBatch(MultipartFile file){
Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP);
@@ -332,11 +634,28 @@
if(dataList == null || dataList.size() ==0){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
}
+ Date date =new Date();
+ List<ShopImport> finalDataList = dataList;
+ Callable<String> task = () -> {
+ dealShopDataBiz(finalDataList,date,loginUserInfo);
+ return "寮傛浠诲姟瀹屾垚";
+ };
+ executor.submit(task);
+
+ return "瀵煎叆鎴愬姛";
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
+
+ private void dealShopDataBiz(List<ShopImport> dataList, Date date, LoginUserInfo loginUserInfo) {
+ try {
List<Shop> list = shopMapper.selectJoinList(Shop.class,new MPJLambdaWrapper<Shop>()
.selectAll(Shop.class)
);
List<Shop> insertShops = new ArrayList<>();
- Date date =new Date();
List<Shop> updateShops = new ArrayList<>();
for(int i=0;i<dataList.size();i++){
ShopImport model = dataList.get(i);
@@ -365,12 +684,12 @@
shopMapper.updateById(s);
}
}
- return "瀵煎叆鎴愬姛";
}catch (BusinessException e){
throw e;
}catch (Exception e){
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
}finally {
+ executor.shutdown();
redisTemplate.delete(Constants.RedisKeys.IMPORTING_SHOP);
}
}
@@ -556,10 +875,16 @@
s.setIdPath(s.getId()+"/");
shopMapper.updateById(s);
}else{
+ String idPath = StringUtils.defaultString(parent.getIdPath(),"")+ shop.getId()+"/";
+ String namePath =StringUtils.defaultString(parent.getNamePath(),"")+"/"+shop.getName();
s.setParentId(parent.getId());
- s.setNamePath(parent.getNamePath()+"/"+s.getName());
- s.setIdPath(parent.getIdPath()+s.getId()+"/");
- shopMapper.updateById(s);
+ s.setNamePath(namePath);
+ s.setIdPath(idPath);
+ if(!(Constants.equalsLong(parent.getId(),shop.getParentId())
+ && StringUtils.equals(idPath,shop.getIdPath())
+ &&StringUtils.equals(namePath,shop.getNamePath())) ){
+ shopMapper.updateById(s);
+ }
}
if(shop.getChildList()!=null && shop.getChildList().size()>0){
updateNamePath(s,shop.getChildList());
@@ -567,4 +892,104 @@
}
}
}
+
+
+
+ @Override
+ public PageData<Shop> queryShopByLL(PageWrap<Shop> pageWrap) {
+ if(Objects.isNull(pageWrap.getModel())
+ || Objects.isNull(pageWrap.getModel().getLatitude())
+ || Objects.isNull(pageWrap.getModel().getLongitude())){
+ return null;
+ }
+ IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Shop> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," +
+ " CONVERT (ST_Distance_Sphere (point ("+pageWrap.getModel().getLongitude()+", "+pageWrap.getModel().getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance ")
+ .eq("isdeleted",Constants.ZERO)
+ .isNotNull("LATITUDE")
+ .isNotNull("LONGITUDE")
+ .eq("ATTRIBUTE",Constants.ONE)
+ .orderByAsc(" distance ");
+ Utils.MP.blankToNull(pageWrap.getModel());
+ PageData<Shop> pageData = PageData.from(shopMapper.selectPage(page, queryWrapper));
+ String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+ StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+ for (Shop shop:pageData.getRecords()) {
+ //鏌ヨ闂ㄥ簵涓嬪璐暟鎹�
+ List<Users> usersList =usersMapper.selectList(new QueryWrapper<Users>().lambda().eq(Users::getDepartmentId,shop.getId())
+ .eq(Users::getIsdeleted,Constants.ZERO)
+ .eq(Users::getStatus,Constants.ONE)
+ .eq(Users::getType,Constants.ZERO)
+ );
+ for (Users users:usersList) {
+ if(StringUtils.isNotBlank(users.getImgurl())){
+ users.setImgurlFull(prefix + users.getImgurl());
+ }
+ }
+ shop.setUsersList(usersList);
+ }
+ return pageData;
+ }
+
+ @Override
+ public Shop shopDetail(Long id,Long memberId) {
+ QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>();
+ if(Objects.nonNull(memberId)){
+ Member member = memberMapper.selectById(memberId);
+ //濡傛灉浜哄憳娌℃湁缁忕含搴︿俊鎭紝鍒欎笉鏌ヨ璺濈
+ if(Objects.nonNull(member)&&Objects.nonNull(member.getLatitude())&&Objects.nonNull(member.getLongitude())){
+ queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," +
+ " CONVERT (ST_Distance_Sphere (point ("+member.getLongitude()+", "+member.getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance ");
+ }
+ }
+ queryWrapper.eq("id",id);
+ Shop shop = shopMapper.selectOne(queryWrapper);
+ if(Objects.isNull(shop)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+ StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+ List<Users> usersList =usersMapper.selectList(new QueryWrapper<Users>().lambda().eq(Users::getDepartmentId,shop.getId())
+ .eq(Users::getIsdeleted,Constants.ZERO)
+ .eq(Users::getStatus,Constants.ONE)
+ .eq(Users::getType,Constants.ZERO)
+ );
+ for (Users users:usersList) {
+ if(StringUtils.isNotBlank(users.getImgurl())){
+ users.setImgurlFull(prefix + users.getImgurl());
+ }
+ }
+ shop.setUsersList(usersList);
+ //鏌ヨ缁忚惀鑼冨洿淇℃伅
+ List<CategorySeg> categorySegList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda().eq(CategorySeg::getOrgId,shop.getOrgId()).eq(CategorySeg::getIsdeleted,Constants.ZERO));
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegList)){
+ List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList();
+ List<String> seqNameList = new ArrayList<>();
+ for(CategorySeg model : categorySegList){
+ String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList);
+ if(Objects.nonNull(seqName)){
+ seqNameList.add(seqName);
+ }
+ }
+ shop.setSeqNameList(seqNameList);
+ }
+ return shop;
+ }
+
+ @Override
+ public void updShop(EditShopDTO editShopDTO) {
+ if(Objects.isNull(editShopDTO)
+ || Objects.isNull(editShopDTO.getId())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ Shop shop = shopMapper.selectById(editShopDTO.getId());
+ if(Objects.isNull(shop)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ Shop updShop = new Shop();
+ BeanUtils.copyProperties(editShopDTO,updShop);
+ shopMapper.updateById(updShop);
+ }
+
}
--
Gitblit v1.9.3