Commit 101167c4 authored by libin's avatar libin

用户身份信息

parent fdaa7130
package com.github.wxiaoqi.security.admin.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/9/23 18:36
*/
@Data
public class AppUserPositionTempFindDTO extends PageParam {
private String phone;
private String name;
private Integer status;
}
......@@ -43,9 +43,9 @@ public class AppUserPositionTemp implements Serializable {
@ApiModelProperty(value = "职位id")
private Integer positionId;
@Column(name = "position_name")
@Column(name = "name")
@ApiModelProperty(value = "姓名")
private Integer positionName;
private String name;
@Column(name = "crt_time")
......
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/9/23 18:38
*/
@Builder(toBuilder = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AppUserPositionTempVo {
private Integer id;
@ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "职位名")
private String positionName;
@ApiModelProperty(value = "数据状态 1:已核销 2:未核销")
private Integer status;
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
}
......@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.UserPostionDTO;
import com.github.wxiaoqi.security.admin.vo.WalletPostionVo;
import org.apache.commons.collections.CollectionUtils;
import org.jsoup.select.Collector;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
......@@ -11,9 +12,10 @@ import com.github.wxiaoqi.security.admin.mapper.AppUserPositionMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 用户身份职位表
......@@ -23,7 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
* @date 2019-07-09 10:00:42
*/
@Transactional
@Service
@Service("appUserPositionBiz")
public class AppUserPositionBiz extends BaseBiz<AppUserPositionMapper,AppUserPosition> {
......@@ -58,4 +60,19 @@ public class AppUserPositionBiz extends BaseBiz<AppUserPositionMapper,AppUserPos
}
return counter.get();
}
public Map<Integer, AppUserPosition> findPostionIdAndPostionMapByIds(List<Integer> postionIds) {
Map<Integer,AppUserPosition> postionMap = new HashMap<>();
List<AppUserPosition> data= mapper.selectByIdList(postionIds);
if(CollectionUtils.isEmpty(data)){
return postionMap;
}
postionMap = data.stream().collect(Collectors.toMap(AppUserPosition::getId, Function.identity()));
return postionMap;
}
public Map<Integer, String> findPostionIdAndNameMap() {
List<AppUserPosition> postions = selectListAll();
return postions.stream().collect(Collectors.toMap(AppUserPosition::getId,AppUserPosition::getName));
}
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempDTO;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempFindDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserPosition;
import com.github.wxiaoqi.security.admin.entity.AppUserPositionTemp;
import com.github.wxiaoqi.security.admin.mapper.AppUserPositionTempMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserPositionTempVo;
import com.github.wxiaoqi.security.admin.vo.WalletPostionVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
import java.util.Objects;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -27,8 +37,9 @@ import java.util.Objects;
* @date 2019-07-09 10:00:42
*/
@Transactional
@DependsOn("appUserPositionBiz")
@Service
public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, AppUserPositionTemp> {
public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, AppUserPositionTemp> implements InitializingBean {
@Autowired
private AppUserDetailBiz detailBiz;
......@@ -36,33 +47,38 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
@Autowired
private AppUserLoginBiz loginBiz;
@Autowired
private AppUserPositionBiz appUserPositionBiz;
private Map<Integer, String> postionIdAndNameMap;
public ObjectRestResponse add(AppUserPositionTempDTO appUserPositionTempDTO) {
if (appUserPositionTempDTO==null|| StringUtils.isBlank(appUserPositionTempDTO.getPhone()) ||StringUtils.isBlank(appUserPositionTempDTO.getName())
||appUserPositionTempDTO.getPositionId()==null||appUserPositionTempDTO.getPositionId()==0){
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE,"参数不能为空");
}
String phone=appUserPositionTempDTO.getPhone();
Integer id=appUserPositionTempDTO.getId()==null?0:appUserPositionTempDTO.getId();
Example example=new Example(AppUserPositionTempBiz.class);
example.createCriteria().andEqualTo("phone",phone).andNotEqualTo("id",id).andEqualTo("isDel",0);
List<AppUserPositionTemp> list=selectByExample(example);
if (list.size()>0){
return ObjectRestResponse.createFailedResult(ResultCode.EXIST_CODE,"手机号码已存在");
}
Integer userId=0;
AppUserLogin userLogin=loginBiz.checkeUserLogin(phone);
if (userLogin!=null){
userId=userLogin.getId();
if (appUserPositionTempDTO == null || StringUtils.isBlank(appUserPositionTempDTO.getPhone()) || StringUtils.isBlank(appUserPositionTempDTO.getName())
|| appUserPositionTempDTO.getPositionId() == null || appUserPositionTempDTO.getPositionId() == 0) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "参数不能为空");
}
String phone = appUserPositionTempDTO.getPhone();
Integer id = appUserPositionTempDTO.getId() == null ? 0 : appUserPositionTempDTO.getId();
Example example = new Example(AppUserPositionTempBiz.class);
example.createCriteria().andEqualTo("phone", phone).andNotEqualTo("id", id).andEqualTo("isDel", 0);
List<AppUserPositionTemp> list = selectByExample(example);
if (list.size() > 0) {
return ObjectRestResponse.createFailedResult(ResultCode.EXIST_CODE, "手机号码已存在");
}
Integer userId = 0;
AppUserLogin userLogin = loginBiz.checkeUserLogin(phone);
if (userLogin != null) {
userId = userLogin.getId();
}
AppUserPositionTemp userPositionTemp = new AppUserPositionTemp();
BeanUtils.copyProperties(appUserPositionTempDTO,userPositionTemp);
BeanUtils.copyProperties(appUserPositionTempDTO, userPositionTemp);
userPositionTemp.setUserId(userId);
//编辑
if (id==null||id==0){
if (id == null || id == 0) {
updateSelectiveById(userPositionTemp);
}else { //保存
} else { //保存
userPositionTemp.setCrtTime(Instant.now().toEpochMilli());
insertSelective(userPositionTemp);
}
return ObjectRestResponse.succ();
......@@ -74,4 +90,108 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
appUserPositionTemp.setIsDel(status);
mapper.updateByPrimaryKeySelective(appUserPositionTemp);
}
public PageDataVO<AppUserPositionTempVo> findWithPage(AppUserPositionTempFindDTO appUserPositionTempFindDTO) {
PageDataVO<AppUserPositionTempVo> dataVO = new PageDataVO<>();
Example example = new Example(AppUserPositionTemp.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("isDel", 0);
if (StringUtils.isNotEmpty(appUserPositionTempFindDTO.getName())) {
criteria.andLike("name", String.format("%%%s%%", appUserPositionTempFindDTO.getName().trim()));
}
if (StringUtils.isNotEmpty(appUserPositionTempFindDTO.getPhone())) {
criteria.andEqualTo("phone", appUserPositionTempFindDTO.getPhone());
}
if (DataStatus.USERED.code == appUserPositionTempFindDTO.getStatus()) {
criteria.andIsNotNull("userId");
}
if (DataStatus.NO_USERED.code == appUserPositionTempFindDTO.getStatus()) {
criteria.andIsNull("userId");
}
PageDataVO<AppUserPositionTemp> pageDataVO = PageDataVO.pageInfo(appUserPositionTempFindDTO.getPage(), appUserPositionTempFindDTO.getLimit(), () -> mapper.selectByExample(example));
List<AppUserPositionTemp> data = pageDataVO.getData();
if (CollectionUtils.isEmpty(data)) {
dataVO.setData(Collections.EMPTY_LIST);
dataVO.setPageNum(appUserPositionTempFindDTO.getPage());
dataVO.setPageSize(appUserPositionTempFindDTO.getLimit());
return dataVO;
}
List<Integer> postionIds = data.stream().map(AppUserPositionTemp::getPositionId).collect(Collectors.toList());
Map<Integer, AppUserPosition> postionMap = appUserPositionBiz.findPostionIdAndPostionMapByIds(postionIds);
List<AppUserPositionTempVo> appUserPositionTempVos = new ArrayList<>();
AppUserPositionTempVo appUserPositionTempVo;
for (AppUserPositionTemp appUserPositionTemp : data) {
appUserPositionTempVo = new AppUserPositionTempVo();
BeanUtils.copyProperties(appUserPositionTemp, appUserPositionTempVo);
String postionName = postionMap == null ? "" : postionMap.get(appUserPositionTemp.getPositionId()).getName();
appUserPositionTempVo.setPositionName(postionName);
appUserPositionTempVo.setStatus(appUserPositionTemp.getUserId() == null ? DataStatus.NO_USERED.code : DataStatus.USERED.code);
}
dataVO.setData(appUserPositionTempVos);
dataVO.setPageSize(pageDataVO.getPageSize());
dataVO.setPageNum(pageDataVO.getPageNum());
dataVO.setTotalCount(pageDataVO.getTotalCount());
dataVO.setTotalPage(pageDataVO.getTotalPage());
return dataVO;
}
public List<Map<String, Object>> importUserPostion(List<String[]> userPostionData) {
List<Map<String, Object>> errorResult = Lists.newArrayList();
Map<String, Object> errorResultMap;
Set<Map.Entry<Integer, String>> entrySet = postionIdAndNameMap.entrySet();
AppUserPositionTemp appUserPositionTemp;
for (int i = 0; i < userPostionData.size(); i++) {
String[] data = userPostionData.get(i);
String name = data[0];
String phone = data[1];
String postionName = data[2];
Integer postionId = null;
try {
//根据手机号查询userId
AppUserLogin userLogin = loginBiz.checkeUserLogin(phone);
for (Map.Entry<Integer, String> integerStringEntry : entrySet) {
if (integerStringEntry.getValue().contains(postionName)) {
postionId = integerStringEntry.getKey();
break;
}
}
appUserPositionTemp = new AppUserPositionTemp();
appUserPositionTemp.setCrtTime(Instant.now().toEpochMilli());
appUserPositionTemp.setName(name);
appUserPositionTemp.setPositionId(postionId);
appUserPositionTemp.setPhone(phone);
if (Objects.nonNull(userLogin)) {
//更新用户身份信息
detailBiz.updateUserPositionByUserId(userLogin.getId(), postionId);
}
mapper.insertSelective(appUserPositionTemp);
} catch (Exception ex) {
errorResultMap = new HashMap<>(1);
errorResultMap.put("num", i);
errorResultMap.put("data", Arrays.toString(data));
errorResult.add(errorResultMap);
}
}
return errorResult;
}
private enum DataStatus {
USERED(1), NO_USERED(0);
private int code;
DataStatus(int code) {
this.code = code;
}
}
@Override
public void afterPropertiesSet() throws Exception {
postionIdAndNameMap = appUserPositionBiz.findPostionIdAndNameMap() == null ? Collections.EMPTY_MAP : appUserPositionBiz.findPostionIdAndNameMap();
}
}
......@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.dto.UserPostionDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserPosition;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.idlist.IdListMapper;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -14,7 +15,7 @@ import java.util.List;
* @email 18178966185@163.com
* @date 2019-07-09 10:00:42
*/
public interface AppUserPositionMapper extends Mapper<AppUserPosition> {
public interface AppUserPositionMapper extends Mapper<AppUserPosition>, IdListMapper {
AppUserPosition getExtractByUserId(@Param("userId")Integer userId);
......
......@@ -3,15 +3,22 @@ package com.github.wxiaoqi.security.admin.rest.admin;
import com.github.wxiaoqi.security.admin.biz.AppUserPositionBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserPositionTempBiz;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempDTO;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempFindDTO;
import com.github.wxiaoqi.security.admin.dto.UserPostionDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserPositionTempVo;
import com.github.wxiaoqi.security.admin.vo.WalletPostionVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.excel.ExcelImport;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author libin
......@@ -54,12 +61,18 @@ public class AppUserPositionController {
/**
* 批量导入
* @param multipartFile
* @param userPostionExcel
* @return
*/
@PostMapping("/excel/import")
public ObjectRestResponse<Void> importUserPostion(@RequestPart("file") MultipartFile multipartFile) {
return ObjectRestResponse.succ();
public ObjectRestResponse<Void> importUserPostion(@RequestPart("file") MultipartFile userPostionExcel) {
List<String[]> userPostionData = ExcelImport.getExcelData(userPostionExcel);
if (userPostionData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
userPostionData.remove(0);
List<Map<String, Object>> result = appUserPositionTempBiz.importUserPostion(userPostionData);
return ObjectRestResponse.succ(result);
}
/**
......@@ -73,4 +86,10 @@ public class AppUserPositionController {
return ObjectRestResponse.succ();
}
@PostMapping("/page")
public ObjectRestResponse<PageDataVO<AppUserPositionTempVo>> findWithPage(@RequestBody AppUserPositionTempFindDTO appUserPositionTempFindDTO){
PageDataVO<AppUserPositionTempVo> dataVO = appUserPositionTempBiz.findWithPage(appUserPositionTempFindDTO);
return ObjectRestResponse.succ(dataVO);
}
}
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