server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -30,8 +30,6 @@ @Autowired private RedisTemplate<String,Object> stringRedisTemplate; @Resource private JwtProperties jwtProperties; /** * è·åå½åç»å½ç¨æ· * @author Eva.Caesar Liu @@ -51,9 +49,6 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·ç»é已失æï¼è¯·éæ°ç»éï¼"); } 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
@@ -38,9 +38,10 @@ public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) { LoginUserInfo userInfo = this.getLoginUser(token); dto.setUserId(userInfo.getId()); dto.setToken(token); dto.setLoginUserInfo(userInfo); 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
@@ -1,9 +1,11 @@ package com.doumee.biz.system.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.biz.system.SystemUserBiz; import com.doumee.config.jwt.JwtProperties; import com.doumee.core.annotation.excel.ExcelImporter; import com.doumee.core.exception.BusinessException; import com.doumee.core.constants.ResponseStatus; @@ -16,23 +18,31 @@ import com.doumee.dao.system.dto.UpdatePwdDto; import com.doumee.dao.system.model.*; import com.doumee.service.system.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Service @Slf4j public class SystemUserBizImpl implements SystemUserBiz { @Autowired private RedisTemplate<String,Object> redisTemplate; @Autowired private JwtProperties jwtProperties; @Autowired private SystemUserService systemUserService; @@ -86,7 +96,7 @@ if(StringUtils.isBlank(dto.getNewPwd()) ||dto.getNewPwd().length()>20 ||dto.getNewPwd().length()<6 ||PwdCheckUtil.checkPassword(dto.getNewPwd())){ ||!PwdCheckUtil.checkPassword(dto.getNewPwd())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼å¯ç å¤æåº¦ä¸æ»¡è¶³è¦æ±ï¼6-20个å符ï¼è³å°å å«åæ¯ãæ°ååç¹æ®å符2ç§"); } SystemUser user = systemUserService.findById(dto.getUserId()); @@ -103,6 +113,19 @@ newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt())); newUser.setNeedChangePwd(Constants.ONE); systemUserService.updateById(newUser); log.info("===================æ´æ°ä¿¡æ¯"); try { // log.error("redisTemplate:["+redisTemplate+"]\njwtProperties=:["+jwtProperties+"]\n"+"token:["+dto.getToken()+"]\nuser:"+dto.getLoginUserInfo()); if(redisTemplate!=null&&dto.getToken() !=null &&dto.getLoginUserInfo()!=null && jwtProperties!=null){ dto.getLoginUserInfo().setNeedChangePwd(Constants.ONE); redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+dto.getToken(),JSONObject.toJSONString(dto.getLoginUserInfo()),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS); } }catch (Exception e){ // log.error("redisTemplate:["+redisTemplate+"]\njwtProperties=:["+jwtProperties+"]\n"+"token:["+dto.getToken()+"]\nuser:"+dto.getLoginUserInfo()); e.printStackTrace(); } } @Override server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -150,6 +150,7 @@ return token; } /** * ä»ä»¤çä¸è·åæ°æ®å£°æ,éªè¯JWTç¾å * server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -1,5 +1,6 @@ package com.doumee.core.model; import com.doumee.core.utils.Constants; import com.doumee.dao.business.model.Company; import com.doumee.dao.system.model.SystemPermission; import com.doumee.dao.system.model.SystemRole; @@ -66,6 +67,7 @@ rs.add(role.getCode()); } } loginUserInfo.setNeedChangePwd(Constants.formatIntegerNum(user.getNeedChangePwd())); loginUserInfo.setSessionId(sessionId); loginUserInfo.setRoles(rs); // 设置æéä¿¡æ¯ server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java
@@ -65,14 +65,14 @@ } public static void main(String[] args) { checkPassword("fasdagd"); checkPassword("41234123"); checkPassword("#$%^&&*("); checkPassword("fasd$$"); checkPassword("41234%%%"); checkPassword("fasd41^(324"); checkPassword("fa413%^&*"); checkPassword("&%fa413%^&*"); checkPassword("123456a"); // checkPassword("41234123"); // checkPassword("#$%^&&*("); // checkPassword("fasd$$"); // checkPassword("41234%%%"); // checkPassword("fasd41^(324"); // checkPassword("fa413%^&*"); // checkPassword("&%fa413%^&*"); } } server/system_service/src/main/java/com/doumee/core/utils/ScientificNotationTUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.doumee.core.utils; import java.util.regex.Pattern; /** * Javaæ£åæ ¡éªå¯ç è³å°å å«ï¼åæ¯æ°åç¹æ®ç¬¦å·ä¸ç2ç§ */ import java.math.BigDecimal; import java.util.regex.Pattern; public class ScientificNotationTUtil { private static final Pattern SCIENTIFIC_NOTATION_PATTERN = Pattern.compile("[+-]?\\d*(\\.\\d+)?[eE][+-]?\\d+"); public static boolean isScientificNotation(String value) { return SCIENTIFIC_NOTATION_PATTERN.matcher(value).matches(); } public static double convertScientificNotationToDouble(String scientificNotation) { if (isScientificNotation(scientificNotation)) { return (Double.parseDouble(scientificNotation)); } else { throw new IllegalArgumentException("The string is not in scientific notation."); } } public static String convertToString(String numberStr) { try { // å°è¯ç´æ¥å°å符串转æ¢ä¸ºBigDecimal return new BigDecimal(numberStr)+""; } catch (NumberFormatException e) { // å¦æè½¬æ¢å¤±è´¥ï¼åå°è¯è§£æç§å¦è®¡æ°æ³ String[] parts = numberStr.split("E"); if (parts.length == 2) { // è¿æ¯ç§å¦è®¡æ°æ³ï¼éè¦è½¬æ¢ BigDecimal number = new BigDecimal(parts[0]); int exponent = Integer.parseInt(parts[1]); return number.scaleByPowerOfTen(exponent)+""; } } return numberStr; } public static BigDecimal convertScientificNotationToBigDecimal(String scientificNotation) { if (isScientificNotation(scientificNotation)) { return new BigDecimal(scientificNotation); } else { throw new IllegalArgumentException("The string is not in scientific notation."); } } public static void main(String[] args) { // String scientificNotation = "1.23e+3"; // String scientificNotation = "1.5345690888E10"; String scientificNotation = "15345690888"; System.out.println("Is scientific notation: " + isScientificNotation(scientificNotation)); System.out.println("Converted to String: " + convertToString(scientificNotation)); // System.out.println("Converted to BigDecimal: " + convertScientificNotationToBigDecimal(scientificNotation)); } } server/system_service/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java
@@ -1,5 +1,6 @@ package com.doumee.dao.system.dto; import com.doumee.core.model.LoginUserInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +17,10 @@ @ApiModel("ä¿®æ¹å¯ç åæ°") public class UpdatePwdDto implements Serializable { @ApiModelProperty(value = "loginUserInfo", hidden = true) private LoginUserInfo loginUserInfo; @ApiModelProperty(value = "token", hidden = true) private String token; @ApiModelProperty(value = "ç¨æ·ID", hidden = true) private Integer userId; server/visits/dmvisit_admin/src/main/resources/application.yml
@@ -74,5 +74,14 @@ servlet: session: timeout: PT3H #表示12å°æ¶ auth: jwt: enabled: true #æ¯å¦å¼å¯JWTç»å½è®¤è¯åè½ secret: fjkfaf;afa # JWTç§é¥ï¼ç¨äºæ ¡éªJWT令ççåæ³æ§ expiration: 36000000 #JWT令ççæææï¼ç¨äºæ ¡éªJWT令ççåæ³æ§ header: JWTHeaderName #HTTP请æ±çHeaderåç§°ï¼è¯¥Headerä½ä¸ºåæ°ä¼ éJWT令ç userParamName: username #ç¨æ·ç»å½è®¤è¯ç¨æ·ååæ°åç§° pwdParamName: password #ç¨æ·ç»å½è®¤è¯å¯ç åæ°åç§° useDefaultController: true # æ¯å¦ä½¿ç¨é»è®¤çJwtAuthController server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -167,6 +167,7 @@ // çæå¯ç user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); user.setSalt(salt); user.setNeedChangePwd(Constants.ZERO); // åå»ºç¨æ·è®°å½ user.setType(insert.getType()); user.setAvatar(insert.getFaceImg()); @@ -202,7 +203,7 @@ insert.setCode(member.getCode()); insert.setType(Constants.TWO); insert.setHkDate(new Date()); insert.setWorkStatus(Constants.ONE);//é»è®¤å¨è insert.setWorkStatus(Constants.ZERO);//é»è®¤å¨è insert.setCanVisit(Constants.ZERO);//é»è®¤ä¸å¯è®¿é® insert.setAuthStatus(Constants.ZERO); insert.setName(member.getName()); @@ -1856,6 +1857,8 @@ List<Member> newList = new ArrayList<>(); for(int i=0;i<dataList.size();i++){ MemberImport model = dataList.get(i); model.setPhone(ScientificNotationTUtil.convertToString(model.getPhone())); model.setIdcardNo(ScientificNotationTUtil.convertToString(model.getIdcardNo())); if(StringUtils.isBlank(model.getName()) &&StringUtils.isBlank(model.getIdcardNo()) &&StringUtils.isBlank(model.getPhone())