|
@@ -1,30 +1,40 @@
|
|
package com.metro.service.impl;
|
|
package com.metro.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
-import com.metro.baseRe.Ret;
|
|
|
|
|
|
+import com.metro.baseRe.BaseResponse;
|
|
import com.metro.constant.UserConstant;
|
|
import com.metro.constant.UserConstant;
|
|
import com.metro.entity.po.Account;
|
|
import com.metro.entity.po.Account;
|
|
import com.metro.entity.po.Area;
|
|
import com.metro.entity.po.Area;
|
|
-import com.metro.entity.ro.account.SelectAccountPageReq;
|
|
|
|
-import com.metro.entity.ro.account.SelectAccountPageResp;
|
|
|
|
|
|
+import com.metro.entity.ro.account.*;
|
|
|
|
+import com.metro.exception.BusinessException;
|
|
import com.metro.mapper.AccountsMapper;
|
|
import com.metro.mapper.AccountsMapper;
|
|
import com.metro.mapper.AreaMapper;
|
|
import com.metro.mapper.AreaMapper;
|
|
import com.metro.service.AccountService;
|
|
import com.metro.service.AccountService;
|
|
-import com.metro.utils.MapperManager;
|
|
|
|
-import com.metro.utils.StringUtil;
|
|
|
|
|
|
+import com.metro.utils.*;
|
|
import io.github.classgraph.utils.Join;
|
|
import io.github.classgraph.utils.Join;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.FileInputStream;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
+import java.time.LocalTime;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.IntStream;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -39,7 +49,7 @@ import java.util.stream.Stream;
|
|
public class AccountServiceImpl implements AccountService {
|
|
public class AccountServiceImpl implements AccountService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private AccountsMapper AccountsMapper;
|
|
|
|
|
|
+ private AccountsMapper accountsMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private AreaMapper areaMapper;
|
|
private AreaMapper areaMapper;
|
|
|
|
|
|
@@ -52,20 +62,14 @@ public class AccountServiceImpl implements AccountService {
|
|
@Override
|
|
@Override
|
|
public IPage<SelectAccountPageResp> page(SelectAccountPageReq req) {
|
|
public IPage<SelectAccountPageResp> page(SelectAccountPageReq req) {
|
|
IPage<SelectAccountPageResp> respPage = new Page<>(req.getPageNo(), req.getPageSize());
|
|
IPage<SelectAccountPageResp> respPage = new Page<>(req.getPageNo(), req.getPageSize());
|
|
- IPage<Account> selectPage = AccountsMapper.selectPage(new Page<>(req.getPageNo(), req.getPageSize()), pageWrapper(req));
|
|
|
|
|
|
+ IPage<Account> selectPage = accountsMapper.selectPage(new Page<>(req.getPageNo(), req.getPageSize()), pageWrapper(req));
|
|
if (CollectionUtils.isEmpty(selectPage.getRecords())) return respPage;
|
|
if (CollectionUtils.isEmpty(selectPage.getRecords())) return respPage;
|
|
- // 从查询结果中过滤出areaId集合
|
|
|
|
Set<Integer> areaIdSet = selectPage.getRecords().stream().map(Account::getAreaId).collect(Collectors.toSet());
|
|
Set<Integer> areaIdSet = selectPage.getRecords().stream().map(Account::getAreaId).collect(Collectors.toSet());
|
|
-
|
|
|
|
Map<Integer, String> areaMap = areaMapper.selectList(new LambdaQueryWrapper<Area>().in(Area::getId, areaIdSet)).stream().collect(Collectors.toMap(Area::getId, p ->
|
|
Map<Integer, String> areaMap = areaMapper.selectList(new LambdaQueryWrapper<Area>().in(Area::getId, areaIdSet)).stream().collect(Collectors.toMap(Area::getId, p ->
|
|
- Join.join("-", areaMapper.selectList(new LambdaQueryWrapper<Area>().eq(Area::getId, StringUtils.split(p.getDistrictSqe(),"."))).stream().map(Area::getName).collect(Collectors.toList()))
|
|
|
|
|
|
+ Join.join("-", areaMapper.selectList(new LambdaQueryWrapper<Area>().eq(Area::getId, StringUtils.split(p.getDistrictSqe(), "."))).stream().map(Area::getName).collect(Collectors.toList()))
|
|
));
|
|
));
|
|
- return selectPage.convert(p -> MapperManager.mapper(p, SelectAccountPageResp.class, q -> q.setAreaDesc(areaMap.get(p.getAreaId()))));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public Ret add(Integer id) {
|
|
|
|
- return null;
|
|
|
|
|
|
+ Map<Integer, String> areaSqeMap = areaMapper.selectList(new LambdaQueryWrapper<Area>().in(Area::getId, areaIdSet)).stream().collect(Collectors.toMap(Area::getId, Area::getDistrictSqe, (t1, t2) -> t1));
|
|
|
|
+ return selectPage.convert(p -> MapperManager.mapper(p, SelectAccountPageResp.class, q -> q.setAreaSqe(areaSqeMap.get(p.getAreaId())).setAreaDesc(areaMap.get(p.getAreaId()))));
|
|
}
|
|
}
|
|
|
|
|
|
// page wrapper 查询条件
|
|
// page wrapper 查询条件
|
|
@@ -73,9 +77,127 @@ public class AccountServiceImpl implements AccountService {
|
|
LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.like(StringUtils.isNotEmpty(req.getUserName()), Account::getUserName, req.getUserName());
|
|
wrapper.like(StringUtils.isNotEmpty(req.getUserName()), Account::getUserName, req.getUserName());
|
|
wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), Account::getPhone, req.getPhone());
|
|
wrapper.eq(StringUtils.isNotEmpty(req.getPhone()), Account::getPhone, req.getPhone());
|
|
|
|
+ wrapper.eq(Account::getIsDelete, UserConstant.NOT_DELETE);
|
|
return wrapper;
|
|
return wrapper;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 注册账号
|
|
|
|
+ *
|
|
|
|
+ * @param req 账号信息
|
|
|
|
+ * @return 影响行数
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public InsertAccountResp add(InsertAccountReq req) {
|
|
|
|
+ if (StringUtil.isChinese(req.getAccount())) throw new BusinessException(UserConstant.NOT_CHINESE_ACCOUNT);
|
|
|
|
+ if (!StringUtil.isChinese(req.getUserName())) throw new BusinessException(UserConstant.NOT_CHINESE_USERNAME);
|
|
|
|
+ Account account = accountsMapper.selectOne(new LambdaQueryWrapper<Account>().eq(Account::getAccount, req.getAccount()).eq(Account::getIsDelete, UserConstant.NOT_DELETE));
|
|
|
|
+ if (ObjectUtil.isNotEmpty(account)) throw new BusinessException(account.getAccount() + "已经存在!不能注册");
|
|
|
|
+ return new InsertAccountResp().setCount(accountsMapper.insert(MapperManager.mapper(req, Account.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword())).setType(1))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验账号是否存在
|
|
|
|
+ *
|
|
|
|
+ * @param req 账号
|
|
|
|
+ * @return true/false
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ValidAccountResp validAccount(ValidAccountReq req) {
|
|
|
|
+ return new ValidAccountResp().setFlag(ObjectUtil.isNotEmpty(accountsMapper.selectOne(new LambdaQueryWrapper<Account>()
|
|
|
|
+ .eq(Account::getAccount, req.getAccount()).eq(Account::getIsDelete, UserConstant.NOT_DELETE))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除账号
|
|
|
|
+ *
|
|
|
|
+ * @param req 主键
|
|
|
|
+ * @return 影响行数
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public DeleteAccountResp delete(DeleteAccountReq req) {
|
|
|
|
+ return new DeleteAccountResp().setCount(accountsMapper.updateById(new Account().setId(req.getId())
|
|
|
|
+ .setIsDelete(UserConstant.DELETE).setUpdateTime(LocalDateTime.now())));
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 账号详情
|
|
|
|
+ *
|
|
|
|
+ * @param req 主键
|
|
|
|
+ * @return 账号详情
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public DetailAccountResp detail(DeleteAccountReq req) {
|
|
|
|
+ Account account = accountsMapper.selectById(req.getId());
|
|
|
|
+ Area area = areaMapper.selectById(account.getAreaId());
|
|
|
|
+ return MapperManager.mapper(account, DetailAccountResp.class, p -> p.setAreaSqe(area.getDistrictSqe()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改账号
|
|
|
|
+ *
|
|
|
|
+ * @param req 主键
|
|
|
|
+ * @return 影响行数
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public UpdateAccountResp update(UpdateAccountReq req) {
|
|
|
|
+ if (StringUtil.isChinese(req.getAccount())) throw new BusinessException(UserConstant.NOT_CHINESE_ACCOUNT);
|
|
|
|
+ if (!StringUtil.isChinese(req.getUserName())) throw new BusinessException(UserConstant.NOT_CHINESE_USERNAME);
|
|
|
|
+ Account account = accountsMapper.selectOne(new LambdaQueryWrapper<Account>().eq(Account::getAccount, req.getAccount()).eq(Account::getIsDelete, UserConstant.NOT_DELETE));
|
|
|
|
+ if (ObjectUtil.isEmpty(account)) throw new BusinessException(account.getAccount() + "不存在!不能修改");
|
|
|
|
+ return new UpdateAccountResp().setCount(accountsMapper.updateById(MapperManager.mapper(req, Account.class, p -> p.setPassword(MD5UtilNew.string2MD5(req.getPassword()))
|
|
|
|
+ .setUpdateTime(LocalDateTime.now()).setType(1))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 上传文件
|
|
|
|
+ *
|
|
|
|
+ * @param file 文件
|
|
|
|
+ * @return 返回信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public BaseResponse<String> uploadPhoto(MultipartFile file) {
|
|
|
|
+ return FileUtils.uploadPhoto(file);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 预览照片
|
|
|
|
+ *
|
|
|
|
+ * @param response response
|
|
|
|
+ * @param fileUrl fileUrl
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void showPhoto(HttpServletResponse response, String fileUrl) {
|
|
|
|
+ if (StringUtils.isEmpty(fileUrl)) throw new BusinessException("请输入文件路径");
|
|
|
|
+ File fileBase = new File(fileUrl);
|
|
|
|
+ try {
|
|
|
|
+ if (!fileBase.exists()) throw new BusinessException("文件不存在");
|
|
|
|
+ ServletOutputStream outputStream = response.getOutputStream();
|
|
|
|
+ FileInputStream inputStream = new FileInputStream(fileBase);
|
|
|
|
+ inputStream.transferTo(outputStream);
|
|
|
|
+ outputStream.close();
|
|
|
|
+ inputStream.close();
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 导入excel 用户数据
|
|
|
|
+ *
|
|
|
|
+ * @param filePath filePath
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void importSheet(String filePath) {
|
|
|
|
+ List<Object> objects = ExcelUtil.readLessThan1000Row(filePath);
|
|
|
|
+ // 过滤头信息
|
|
|
|
+ List<Object> finalObjects = objects;
|
|
|
|
+ List<DetailAccountResp> detailAccountResps = new ArrayList<>();
|
|
|
|
+ for (int i = 2; i < finalObjects.size(); i++) {
|
|
|
|
+ Object o = finalObjects.get(i);
|
|
|
|
+ System.out.println(o);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|