he2802 1 year ago
parent
commit
7fecd19b27

+ 3 - 0
zhongzheng-admin-saas/src/main/resources/application.yml

@@ -248,6 +248,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: false
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 6 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -280,4 +280,10 @@ public class ExamApplyController extends BaseController {
         return AjaxResult.success(iExamApplyService.examUserProfileExport(bo));
     }
 
+    @ApiOperation("修改考场人数")
+    @PostMapping ("/update/applyNum")
+    public AjaxResult updateApplyNum(@RequestBody UpdateApplyNumBo bo) {
+        return toAjax(iExamApplyService.updateApplyNum(bo) ? 1 : 0);
+    }
+
 }

+ 3 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -248,6 +248,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: true
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 3 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -245,6 +245,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: false
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 4 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java

@@ -103,6 +103,10 @@ public class SysRole implements Serializable
 
     private String tenantId;
 
+    /** 手机号查看标识:1可以查到 0隐藏 */
+    @ApiModelProperty(value ="手机号查看标识:1可以查到 0隐藏")
+    private Integer phoneConceal;
+
     /**
      * 请求参数
      */

+ 5 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java

@@ -68,6 +68,11 @@ public class LoginUser implements UserDetails
      */
     private SysUser user;
 
+    /**
+     * 手机号隐藏标识 1,不隐藏
+     */
+    private Integer phoneConcealSign;
+
 
     public LoginUser(SysUser user, Set<String> permissions)
     {

+ 31 - 2
zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java

@@ -2,14 +2,25 @@ package com.zhongzheng.common.type;
 
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.symmetric.AES;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.TelPhoneUtils;
 import org.apache.ibatis.type.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.token.Token;
+import org.springframework.security.core.token.TokenService;
 import org.springframework.util.StringUtils;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Properties;
 
 
 @MappedJdbcTypes(JdbcType.VARCHAR)
@@ -20,7 +31,6 @@ public class EncryptHandler  implements TypeHandler<String> {
     public static final boolean ENCRYPT_STATUS = true; //是否开启字段加密
 
 
-
     public static String decrypt(String value) {
         if (null == value) {
             return null;
@@ -28,7 +38,25 @@ public class EncryptHandler  implements TypeHandler<String> {
         if (value.length()<=20 ) {
             return value;
         }
-        return SecureUtil.aes(KEYS).decryptStr(value);
+        String s = SecureUtil.aes(KEYS).decryptStr(value);
+        Boolean phoneConceal = false;
+        try (InputStream inputStream = EncryptHandler.class.getClassLoader().getResourceAsStream("application.yml")) {
+            Properties properties = new Properties();
+            properties.load(inputStream);
+            String property = properties.getProperty("conceal");
+            phoneConceal = Boolean.valueOf(property);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        if (phoneConceal){
+            //开启手机号码加密
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            if (s.length() <= 11 &&
+                    (ObjectUtils.isNull(loginUser.getPhoneConcealSign()) || loginUser.getPhoneConcealSign() != 1)){
+                return TelPhoneUtils.hideTelPhone(s);
+            }
+        }
+        return s;
     }
 
     public static String encrypt(String value){
@@ -38,6 +66,7 @@ public class EncryptHandler  implements TypeHandler<String> {
         if(ENCRYPT_STATUS){
             AES aes = SecureUtil.aes(KEYS);
             String encrypt = aes.encryptHex(value);
+
             return encrypt;
         }else{
             return value;

+ 17 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java

@@ -3,6 +3,7 @@ package com.zhongzheng.framework.web.service;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.entity.SysRole;
@@ -40,6 +41,7 @@ import javax.annotation.Resource;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 登录校验方法
@@ -143,7 +145,22 @@ public class SysLoginService
         }
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        loginUser.setPhoneConcealSign(0);
         SysUser user = iSysUserService.updateLoginTimeIp(loginUser.getUser().getUserId());
+        //查看用户权限是否可以查看手机号码
+        if (user.getUserName().equals("admin")){
+            loginUser.setPhoneConcealSign(1);
+        }else {
+            List<SysUserRole> list = iSysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
+                    .eq(SysUserRole::getUserId, user.getUserId()).eq(SysUserRole::getTenantId,user.getTenantId()));
+            if (CollectionUtils.isNotEmpty(list)){
+                List<SysRole> sysRoles = iSysRoleService.listByIds(list.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()));
+                if (sysRoles.stream().anyMatch(x -> x.getPhoneConceal() == 1)){
+                    loginUser.setPhoneConcealSign(1);
+                }
+            }
+
+        }
         String dualAuth = configService.selectConfigByKey("login.dual.auth");
         if(Validator.isNotEmpty(dualAuth)&&dualAuth.equals("1")){
             if(Validator.isEmpty(tel)){

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/UpdateApplyNumBo.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.exam.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2024年04月11日 15:03
+ */
+@Data
+public class UpdateApplyNumBo implements Serializable {
+
+    private List<Long> applyIds;
+
+    private Integer num;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java

@@ -113,4 +113,6 @@ public interface IExamApplyService extends IService<ExamApply> {
     String examApplyResultCertificate(List<MultipartFile> files);
 
 	List<UserProfile> getUserProfiles(String idCard, String businessName, String major);
+
+    boolean updateApplyNum(UpdateApplyNumBo bo);
 }

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java

@@ -1150,6 +1150,30 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
        return baseMapper.getUserProfileList(idCard,businessName,major);
     }
 
+    @Override
+    public boolean updateApplyNum(UpdateApplyNumBo bo) {
+        for (Long applyId : bo.getApplyIds()) {
+            ExamApply apply = getById(applyId);
+            if (ObjectUtils.isNull(apply)){
+                throw new CustomException("考试信息获取有误!");
+            }
+            List<ExamApplySiteTime> siteTimeList = iExamApplySiteTimeService
+                    .list(new LambdaQueryWrapper<ExamApplySiteTime>().eq(ExamApplySiteTime::getApplyId, applyId));
+            if (CollectionUtils.isNotEmpty(siteTimeList)){
+                siteTimeList.forEach(item -> {
+                    List<ExamApplySiteTimeTwoAddBo> siteTimeTwoAddBos = JSONArray.parseArray(item.getSiteTime(), ExamApplySiteTimeTwoAddBo.class);
+                    if (CollectionUtils.isNotEmpty(siteTimeTwoAddBos)){
+                        siteTimeTwoAddBos.forEach(x -> x.setNum(bo.getNum().longValue()));
+                        String s = JSONArray.toJSONString(siteTimeTwoAddBos);
+                        item.setSiteTime(s);
+                    }
+                });
+            }
+            iExamApplySiteTimeService.updateBatchById(siteTimeList);
+        }
+        return true;
+    }
+
     @Override
     public String examUserProfileExport(UserProfileQueryBo bo) {
         List<UserProfileVo> userProfileVos = iUserProfileService.queryList(bo);

+ 10 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysUserServiceImpl.java

@@ -495,7 +495,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         user.setLoginDate(DateUtils.getNowDate());
         user.setUpdateTime(DateUtils.getNowDate());
         user.setUpdateBy("sys");
-        baseMapper.updateById(user);
+//        baseMapper.updateById(user);
+        update(new LambdaUpdateWrapper<SysUser>()
+        .set(SysUser::getPreLoginIp,user.getLoginIp())
+        .set(SysUser::getPreLoginDate,user.getLoginDate())
+        .set(SysUser::getLoginIp,IpUtils.getIpAddr(ServletUtils.getRequest()))
+        .set(SysUser::getLoginDate,DateUtils.getNowDate())
+        .set(SysUser::getUpdateTime,DateUtils.getNowDate())
+        .set(SysUser::getUpdateBy,"sys")
+        .eq(SysUser::getUserId,userId)
+        );
         return user;
     }
 

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/system/SysUserMapper.xml

@@ -27,7 +27,7 @@
         <result property="preLoginIp" column="pre_login_ip"/>
         <result property="preLoginDate" column="pre_login_date"/>
         <result property="pwdTime" column="pwd_time"/>
-        <result property="idCard" column="id_card" typeHandler="com.zhongzheng.common.type.EncryptHandler"/>
+        <result property="idCard" column="id_card"/>
         <result property="sellerId" column="seller_id"/>
         <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/>
         <collection property="roles" column="user_id" select="findRolesList" javaType="java.util.List" />