Browse Source

导入手机号到用户表完善

chenzhengming 2 years ago
parent
commit
4af78920b5

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/FileController.java

@@ -6,7 +6,6 @@ import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.framework.config.ServerConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;

+ 7 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/LcdInfoController.java

@@ -5,8 +5,13 @@ import java.util.Date;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.domain.PostUser;
 import com.ruoyi.system.domain.vo.LcdInfoVo;
+import com.ruoyi.system.service.ILcdInfoImportDataService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -20,6 +25,7 @@ import com.ruoyi.system.domain.LcdInfo;
 import com.ruoyi.system.service.ILcdInfoService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 消息Controller
@@ -62,6 +68,7 @@ public class LcdInfoController extends BaseController
         util.exportExcel(response, list, "消息数据");
     }
 
+
     /**
      * 获取消息详细信息
      */

+ 32 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PostUserController.java

@@ -4,18 +4,15 @@ package com.ruoyi.web.controller.system;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.service.ILcdInfoImportDataService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -24,6 +21,7 @@ import com.ruoyi.system.domain.PostUser;
 import com.ruoyi.system.service.IPostUserService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 权限模块 用户Controller
@@ -39,6 +37,8 @@ public class PostUserController extends BaseController
     @Autowired
     private IPostUserService postUserService;
 
+    @Autowired
+    private ILcdInfoImportDataService iLcdInfoImportDataService;
     /**
      * 查询权限模块 用户列表
      */
@@ -66,6 +66,30 @@ public class PostUserController extends BaseController
         util.exportExcel(response, list, "权限模块 用户数据");
     }
 
+    @ApiOperation("导入用户列表")
+    @Log(title = "用户管理", businessType = BusinessType.IMPORT)
+    @RequestMapping(value = "/importData", method = RequestMethod.POST, headers = "content-type=multipart/form-data")
+    public AjaxResult importData(@RequestPart("fire") MultipartFile file, @RequestParam(value = "updateSupport",required=false)boolean updateSupport) throws Exception
+    {
+        ExcelUtil<PostUser> util = new ExcelUtil<PostUser>(PostUser.class);
+        List<PostUser> stuList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String message = iLcdInfoImportDataService.importData(stuList, updateSupport, operName);
+        return AjaxResult.success(message);
+ }
+
+    /**
+     * 下载模板
+     */
+    @ApiOperation("下载模板")
+    @GetMapping("/importTemplate")
+    public AjaxResult importTemplate()
+    {
+        ExcelUtil<PostUser> util = new ExcelUtil<PostUser>(PostUser.class);
+        return util.importTemplateExcel("用户数据");
+    }
+
+
     /**
      * 获取权限模块 用户详细信息
      */

+ 3 - 2
ruoyi-system/src/main/java/com/ruoyi/system/domain/PostUser.java

@@ -11,13 +11,14 @@ import com.ruoyi.common.core.domain.BaseEntity;
  * 权限模块 用户对象 post_user
  *
  * @author ruoyi
- * @date 2023-01-16
+ * @date 2023-02-02
  */
 public class PostUser extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
-    /** id */
+    /** 序号 */
+    @Excel(name = "序号")
     private Long id;
 
     /** 真实姓名 */

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/PostUserMapper.java

@@ -58,4 +58,6 @@ public interface PostUserMapper
      * @return 结果
      */
     public int deletePostUserByIds(Long[] ids);
+
+    PostUser selectPostUserByNumber(String mobile);
 }

+ 19 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ILcdInfoImportDataService.java

@@ -0,0 +1,19 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.PostUser;
+
+import java.util.List;
+
+public interface ILcdInfoImportDataService {
+    /**
+     * 导入用户数据
+     *
+     * @param postUserList 数据列表
+     * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
+     * @param operName 操作用户
+     * @return 结果
+     */
+    public String importData(List<PostUser> postUserList, Boolean isUpdateSupport, String operName);
+
+
+}

+ 85 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ILcdInfoImportDataImpl.java

@@ -0,0 +1,85 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanValidators;
+import com.ruoyi.system.domain.PostUser;
+import com.ruoyi.system.mapper.PostUserMapper;
+import com.ruoyi.system.service.ILcdInfoImportDataService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.validation.Validator;
+import java.util.List;
+
+@Service
+public class ILcdInfoImportDataImpl implements ILcdInfoImportDataService {
+    @Autowired
+    private PostUserMapper postUserMapper;
+    @Autowired
+    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
+
+    @Autowired
+    protected Validator validator;
+
+    @Override
+    public String importData(List<PostUser> postUser, Boolean isUpdateSupport, String operName) {
+        if (StringUtils.isNull(postUser) || postUser.size() == 0)
+        {
+            throw new ServiceException("导入学生基本信息数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (PostUser stu : postUser)
+        {
+            try
+            {
+                // 验证是否存在这个用户
+                PostUser u = postUserMapper.selectPostUserByNumber(stu.getMobile());
+                if (StringUtils.isNull(u))
+                {
+                    BeanValidators.validateWithException(validator, stu);
+                    stu.setCreateBy(operName);
+                    this.postUserMapper.insertPostUser(stu);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、手机 " + stu.getMobile() + " 导入成功");
+                }
+                else if (isUpdateSupport)
+                {
+                    BeanValidators.validateWithException(validator, stu);
+                    stu.setUpdateBy(operName);
+                    this.postUserMapper.updatePostUser(stu);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、手机 " + stu.getMobile() + " 更新成功");
+                }
+                else
+                {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、手机 " + stu.getMobile() + " 已存在");
+                }
+            }
+            catch (Exception e)
+            {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、手机 " + stu.getMobile() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
+
+}

+ 8 - 0
ruoyi-system/src/main/resources/mapper/system/PostUserMapper.xml

@@ -23,6 +23,14 @@
         select id, realname, username, mobile, register_at, last_ip, email, password, update_at, state, login_count, avatar from post_user
     </sql>
 
+    <!--根据电话号查询用户-->
+    <select id="selectPostUserByNumber" parameterType="String" resultMap="PostUserResult">
+        <include refid="selectPostUserVo"/>
+        <where>
+            <if test="mobile != null  and mobile != ''"> and mobile = #{mobile}</if>
+        </where>
+    </select>
+
     <select id="selectPostUserList" parameterType="PostUser" resultMap="PostUserResult">
         <include refid="selectPostUserVo"/>
         <where>

+ 44 - 44
ruoyi-ui/src/api/system/notice.js

@@ -1,44 +1,44 @@
-import request from '@/utils/request'
-
-// 查询公告列表
-export function listNotice(query) {
-  return request({
-    url: '/system/notice/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询公告详细
-export function getNotice(noticeId) {
-  return request({
-    url: '/system/notice/' + noticeId,
-    method: 'get'
-  })
-}
-
-// 新增公告
-export function addNotice(data) {
-  return request({
-    url: '/system/notice',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改公告
-export function updateNotice(data) {
-  return request({
-    url: '/system/notice',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除公告
-export function delNotice(noticeId) {
-  return request({
-    url: '/system/notice/' + noticeId,
-    method: 'delete'
-  })
-}
+import request from '@/utils/request'
+
+// 查询公告列表
+export function listNotice(query) {
+  return request({
+    url: '/system/notice/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询公告详细
+export function getNotice(noticeId) {
+  return request({
+    url: '/system/notice/' + noticeId,
+    method: 'get'
+  })
+}
+
+// 新增公告
+export function addNotice(data) {
+  return request({
+    url: '/system/notice',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改公告
+export function updateNotice(data) {
+  return request({
+    url: '/system/notice',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除公告
+export function delNotice(noticeId) {
+  return request({
+    url: '/system/notice/' + noticeId,
+    method: 'delete'
+  })
+}