admin/src/views/business/relativeMember.vue
@@ -37,9 +37,9 @@ <el-option label="åæ¥å¤±è´¥" value="2"></el-option> </el-select> </el-form-item> <el-form-item label=""> <!-- <el-form-item label=""> <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1">æ¯å¦å å«ä¸çº§ç»ç»</el-checkbox> </el-form-item> </el-form-item>--> <section> <el-button type="primary" @click="search">æç´¢</el-button> <el-button @click="reset">éç½®</el-button> @@ -71,8 +71,14 @@ icon="el-icon-plus" v-permissions="['business:traintime:create']">å¹è®æå¯¼å ¥</el-button></li> <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">æ¹éå é¤</el-button></li> <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">ä¸åææ</el-button></li> <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">ä¸åææ</el-button> <li style="float: right"> <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1" @change="search">æ¯å¦å å«ä¸çº§ç»ç»</el-checkbox> </li> <!-- <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导åº</el-button></li> --> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"></el-table-column> server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -1,6 +1,7 @@ package com.doumee.api; import com.alibaba.fastjson.JSONObject; import com.doumee.config.jwt.JwtProperties; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; @@ -13,9 +14,11 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; /** * Controlleråºç±» @@ -27,6 +30,8 @@ @Autowired private RedisTemplate<String,Object> stringRedisTemplate; @Resource private JwtProperties jwtProperties; /** * è·åå½åç»å½ç¨æ· * @author Eva.Caesar Liu @@ -47,6 +52,9 @@ } return user; } public void updateLoginUser (String token,LoginUserInfo userInfo) { stringRedisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(userInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS); } /** server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java
@@ -4,6 +4,7 @@ import com.doumee.biz.system.SystemUserBiz; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.dao.system.dto.UpdatePwdDto; import com.doumee.service.system.SystemLoginService; @@ -35,8 +36,11 @@ @ApiOperation("ä¿®æ¹å½åç¨æ·å¯ç ") @PostMapping("/updatePwd") public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) { dto.setUserId(this.getLoginUser(token).getId()); LoginUserInfo userInfo = this.getLoginUser(token); dto.setUserId(userInfo.getId()); systemUserBiz.updatePwd(dto); userInfo.setNeedChangePwd(Constants.ONE); updateLoginUser(token,userInfo);//æ´æ°ç»å½tokenä¸ç»å®çç¨æ·ä¿¡æ¯ä¸ºå·²æ´æ°å¯ç return ApiResponse.success(null); } server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -9,6 +9,7 @@ import com.doumee.core.constants.ResponseStatus; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.core.utils.PwdCheckUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.system.SystemDepartmentUserMapper; import com.doumee.dao.system.dto.*; @@ -81,6 +82,13 @@ @Override public void updatePwd(UpdatePwdDto dto) { //ç»å½å¯ç å¤æåº¦æ ¡éªï¼6-20个å符ï¼è³å°å å«åæ¯ãæ°ååç¹æ®å符2ç§ if(StringUtils.isBlank(dto.getNewPwd()) ||dto.getNewPwd().length()>20 ||dto.getNewPwd().length()<6 ||PwdCheckUtil.checkPassword(dto.getNewPwd())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼å¯ç å¤æåº¦ä¸æ»¡è¶³è¦æ±ï¼6-20个å符ï¼è³å°å å«åæ¯ãæ°ååç¹æ®å符2ç§"); } SystemUser user = systemUserService.findById(dto.getUserId()); if (user.getDeleted()) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "ç¨æ·ä¸åå¨æå·²è¢«å é¤"); @@ -93,6 +101,7 @@ SystemUser newUser = new SystemUser(); newUser.setId(dto.getUserId()); newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt())); newUser.setNeedChangePwd(Constants.ONE); systemUserService.updateById(newUser); } @@ -108,6 +117,7 @@ updateUserDto.setId(dto.getId()); updateUserDto.setUpdateUser(dto.getOperaUserId()); updateUserDto.setPassword(Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt())); updateUserDto.setNeedChangePwd(Constants.ZERO); systemUserService.updateById(updateUserDto); } @@ -138,6 +148,7 @@ systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); systemUser.setSalt(salt); systemUser.setSource(Constants.ZERO); systemUser.setNeedChangePwd(Constants.ZERO); // åå»ºç¨æ·è®°å½ systemUser.setType(Constants.ZERO); @@ -263,20 +274,27 @@ .filter(s->StringUtils.isNotBlank(s)) .distinct() .collect(Collectors.toList()); String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(); if (!CollectionUtils.isEmpty(collect)){ QueryWrapper<SystemDepartment> wrapper = new QueryWrapper<>(); wrapper.lambda().in(SystemDepartment::getName,collect); List<SystemDepartment> systemDepartments = systemDepartmentService.findList(wrapper); Map<Integer, String> collect1 = systemDepartments.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName())); // çæå¯ç ç dataList.forEach(s->{ CreateSystemUserDTO systemUser = new CreateSystemUserDTO(); systemUser.setDepartmentId(getKey(collect1,s.getDepartmentName())); systemUser.setUsername(s.getUsername()); systemUser.setRealname(s.getUsername()); systemUser.setEmpNo(s.getEmpNo()); systemUser.setMobile(s.getMobile()); systemUser.setPassword(s.getMobile()); String salt = RandomStringUtils.randomAlphabetic(6); // systemUser.setPassword(s.getMobile()); // çæå¯ç String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(); systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); systemUser.setNeedChangePwd(Constants.ZERO); systemUser.setSalt(salt); systemUser.setCreateUser(loginUserInfo.getId()); systemUser.setUpdateUser(loginUserInfo.getId()); systemUser.setType(Constants.ZERO); @@ -297,7 +315,11 @@ systemUser.setRealname(s.getUsername()); systemUser.setEmpNo(s.getEmpNo()); systemUser.setMobile(s.getMobile()); systemUser.setPassword(s.getMobile()); // çæå¯ç String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(); String salt = RandomStringUtils.randomAlphabetic(6); systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); systemUser.setNeedChangePwd(Constants.ZERO); // systemUser.setPassword(s.getMobile()); systemUser.setCreateUser(loginUserInfo.getId()); systemUser.setUpdateUser(loginUserInfo.getId()); systemUser.setType(Constants.ZERO); server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -36,6 +36,7 @@ private Integer memberId; private Integer type; private Integer needChangePwd; private String mobile; private String sessionId; server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package com.doumee.core.utils; import java.util.regex.Pattern; /** * Javaæ£åæ ¡éªå¯ç è³å°å å«ï¼åæ¯æ°åç¹æ®ç¬¦å·ä¸ç2ç§ */ public class PwdCheckUtil { /** * åå®è®¾ç½®å¯ç æ¶ï¼å¯ç è§åä¸ºï¼ åæ¯ãæ°åãç¹æ®ç¬¦å·ï¼è³å°å¹é 2ç§ * åå¯ç å¯è½åºç°çæ åµæï¼ * 1ãæ°å+ç¹æ®ç¬¦å· * 2ã忝+ç¹æ®ç¬¦å· * 3ã忝+æ°å * 4ã忝+æ°å+ç¹æ®ç¬¦å· * (ç»åä¸é¡ºåºæ å ³) * è§£å³æè·¯ï¼ * 1ãéåå符串çå符æ°ç»ï¼æ¥çæ¯å¦å å«ç®æ ç¹æ®å符ï¼è¥å å«ï¼åæ è®°å符串 * å å«ç¹æ®å符ï¼å¹¶æ¿æ¢å½åç¹æ®å符为''ã * 2ã夿å©ä¸çåç¬¦ç»æçåç¬¦ä¸²ï¼æ¯å¦å¹é 以䏿 åµ * - çº¯åæ¯ * - 纯æ°å * - 忝+æ°å * 3ãå符串å¹é è§å * çº¯åæ¯+å å«ç¹æ®å符 ---- å¹é éè¿ * 纯æ°å+å å«ç¹æ®å符 ---- å¹é éè¿ * 忝+æ°å+å å«ä¸ªæ°å符 ---- å¹é éè¿ */ //ç¹æ®å符 public static final String SPEC_CHARACTERS = " !\"#$%&'()*+,-./:;<=>?@\\]\\[^_`{|}~"; // çº¯åæ¯ public static final String character = "[a-zA-Z]{1,}$"; // 纯æ°å public static final String numberic = "[0-9]{1,}$"; // 忝忰å public static final String number_and_character = "((^[a-zA-Z]{1,}[0-9]{1,}[a-zA-Z0-9]*)+)" + "|((^[0-9]{1,}[a-zA-Z]{1,}[a-zA-Z0-9]*)+)$"; // åæ¯ææ°å public static final String number_or_character = "[a-zA-Z0-9]+$"; // 忝æ°åä¸å线 public static final String ncw = "\\w+$"; public static boolean checkPassword(String targetString) { String opStr = targetString; boolean isLegal = false; boolean hasSpecChar = false; char[] charArray = opStr.toCharArray(); for (char c : charArray) { if (SPEC_CHARACTERS.contains(String.valueOf(c))) { hasSpecChar = true; // æ¿æ¢æ¤å符串 opStr = opStr.replace(c, ' '); } } String excSpecCharStr = opStr.replace(" ", ""); boolean isPureNum = Pattern.compile(numberic).matcher(excSpecCharStr).matches(); boolean isPureChar = Pattern.compile(character).matcher(excSpecCharStr).matches(); boolean isNumAndChar = Pattern.compile(number_and_character).matcher(excSpecCharStr).matches(); isLegal = ((isPureNum && hasSpecChar) || (isPureChar && hasSpecChar) || isNumAndChar && hasSpecChar) || isNumAndChar; System.out.println("å符串ï¼" + targetString + ",æ¯å¦ç¬¦åè§åï¼" + isLegal); System.out.println("---------------"); return isLegal; } public static void main(String[] args) { checkPassword("fasdagd"); checkPassword("41234123"); checkPassword("#$%^&&*("); checkPassword("fasd$$"); checkPassword("41234%%%"); checkPassword("fasd41^(324"); checkPassword("fa413%^&*"); checkPassword("&%fa413%^&*"); } } server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -84,6 +84,8 @@ @ApiModelProperty(value = "å建人", example = "1", hidden = true) private Integer createUser; @ApiModelProperty(value = "æ¯å¦éè¦å¼ºå¶æ´æ°å¯ç 0æ¯ 1å¦") private Integer needChangePwd; @ApiModelProperty(value = "æ´æ°äºº", example = "1", hidden = true) private Integer updateUser; server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java
@@ -72,7 +72,7 @@ e.printStackTrace(); success = Constants.ONE; }finally { wmsService.saveInterfaceLog("/wms/push/outboundNotice", "æ¨éåºåºåéç¥ä»»å¡",JSONObject.toJSONString(param),success wmsService.saveInterfaceLog("/wms/push/outboundNotice", "ãWMSãæ¨éåºåºåéç¥ä»»å¡",JSONObject.toJSONString(param),success , JSONObject.toJSONString(result),Constants.ONE); } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -87,8 +87,6 @@ private PlatformLogMapper platformLogMapper; @Autowired private PlatformWarnEventServiceImpl platformWarnEventService; @Autowired private PlatformJobService platformJobService; /** * 海康é¨ç¦äºä»¶æ¨é * @param param @@ -825,75 +823,55 @@ .last("limit 1" )); if(cars!=null){ event.setMemberId(cars.getMemberId()); if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ if(carsMapper.selectCount(new QueryWrapper<Cars>() .lambda().eq(Cars::getCode,event.getPlateNos()) .eq(Cars::getType,Constants.ONE) .eq(Cars::getIsdeleted,Constants.ZERO) )>Constants.ZERO){ //èªæè½¦è¿åº æ¥è¯¢å½åæ¯å¦æå¾ ç¾å°çä»»å¡ //æ¥è¯¢è½¦è¾å½åæ¯å¦åå¨è¿è¡ä¸çä»»å¡ if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda() .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) .eq(PlatformJob::getIsdeleted,Constants.ZERO) .in(PlatformJob::getStatus, Constants.PlatformJobStatus.IN_WAIT.getKey(), Constants.PlatformJobStatus.CALLED.getKey(), Constants.PlatformJobStatus.WORKING.getKey(), Constants.PlatformJobStatus.DONE.getKey(), Constants.PlatformJobStatus.TRANSFERING.getKey(), Constants.PlatformJobStatus.EXCEPTION.getKey(), Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() ) )==Constants.ZERO){ PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) .eq(PlatformJob::getIsdeleted,Constants.ZERO) .in(PlatformJob::getStatus, Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(), Constants.PlatformJobStatus.WART_SIGN_IN.getKey() ) .orderByAsc(PlatformJob::getCreateDate) .last(" limit 1") ); if(Objects.nonNull(platformJob)){ platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); platformJob.setArriveDate(new Date()); platformJob.setSingType(Constants.TWO); platformJob.setSignDate(new Date()); List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null ")); if(CollectionUtils.isEmpty(signList)){ platformJob.setSignNum(Constants.ONE); } else{ int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); platformJob.setSignNum(maxNumber + Constants.ONE); } platformJobMapper.updateById(platformJob); } } } }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ //离åºå¤ææ¯å¦å卿ªç¦»åºçè®¢åæ°æ® å¤çè®¢åæ°æ® List<PlatformJob> platformJobList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda() //èªæè½¦ æ¥è¯¢å½åæ¯å¦æå¾ ç¾å°çä»»å¡ if(carsMapper.selectCount(new QueryWrapper<Cars>() .lambda().eq(Cars::getCode,event.getPlateNos()) .eq(Cars::getType,Constants.ONE) .eq(Cars::getIsdeleted,Constants.ZERO) )>Constants.ZERO){ //æ¥è¯¢è½¦è¾å½åæ¯å¦åå¨è¿è¡ä¸çä»»å¡ if( platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda() .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) .eq(PlatformJob::getIsdeleted,Constants.ZERO) .in(PlatformJob::getStatus, Constants.PlatformJobStatus.IN_WAIT.getKey(), Constants.PlatformJobStatus.CALLED.getKey(), Constants.PlatformJobStatus.WORKING.getKey(), Constants.PlatformJobStatus.DONE.getKey(), Constants.PlatformJobStatus.TRANSFERING.getKey(), Constants.PlatformJobStatus.EXCEPTION.getKey(), Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() ) )==Constants.ZERO){ PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) .eq(PlatformJob::getIsdeleted,Constants.ZERO) .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey(), Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() )); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobList)){ for (PlatformJob platformJob:platformJobList) { platformJob.setStatus(Constants.PlatformJobStatus.LEAVED.getKey()); platformJob.setOutDate(new Date()); platformJob.setEditDate(new Date()); platformJob.setOutType(Constants.ZERO); platformJobMapper.updateById(platformJob); //æ¸ ç©ºææ platformJobService.cancelInPark(platformJob); Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(), Constants.PlatformJobStatus.WART_SIGN_IN.getKey() ) .orderByAsc(PlatformJob::getCreateDate) .last(" limit 1") ); if(Objects.nonNull(platformJob)){ platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); platformJob.setArriveDate(new Date()); platformJob.setSingType(Constants.TWO); platformJob.setSignDate(new Date()); List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null ")); if(CollectionUtils.isEmpty(signList)){ platformJob.setSignNum(Constants.ONE); } else{ int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); platformJob.setSignNum(maxNumber + Constants.ONE); } platformJobMapper.updateById(platformJob); } } }; }else{ Visits visits = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() .eq(Visits::getCarNos,event.getPlateNos())