diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java index 4e746f3..0d0f699 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,17 +16,20 @@ import com.casic.missiles.modular.system.enums.DocumentTypeEnum; import com.casic.missiles.modular.system.enums.RoleEnum; import com.casic.missiles.modular.system.enums.Status; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.RuRelation; -import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.system.service.IUserRoleRelationService; import com.casic.missiles.modular.system.service.UserActionService; import com.casic.missiles.modular.system.utils.JJWTRootUtils; import com.casic.missiles.modular.system.utils.WXUserUtils; +import com.casic.missiles.modular.util.Base64ImgUtils; import dm.jdbc.util.StringUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.codec.Base64; import org.apache.commons.collections4.ListUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Service("UserActionService") @@ -63,7 +68,9 @@ private IBaseExportService iBaseExportService; @Resource - private ICasicFileService iCasicFileService; + private IUserRoleRelationService iUserRoleRelationService; + + final String filePath = "/tmp/casicSecurityCockpitMiniFile/"; @Override public Object getLoginToken(String code) { @@ -94,6 +101,7 @@ //String phone = WXUserUtils.getPhone(dto.getPhoneCode(),getToken()); String phone = dto.getPhoneCode(); userDto.setAttr1(phone); + userDto.setSyncId(jsonObject.get("openid").toString()); UserDto user = userActionDao.getUserInfo(userDto); if(null != user){ if(StringUtil.isEmpty(user.getSyncId())){ @@ -104,7 +112,7 @@ List list = userActionDao.getList(user.getSalt()); return ResponseData.success(list.get(0).getNum()); }else{ - return ResponseData.error(2402,Status.USER_ALREADY_NOT_REGISTERED); + return ResponseData.error(2402,Status.NOT_SUPPORT); } }catch (Exception e){ e.printStackTrace(); @@ -114,8 +122,12 @@ @Override @Transactional - public Object userRegister(UserDto userDto) { + public Object userRegister(UserDto userDto,HttpServletRequest request) { try { + JSONObject jsonObject = getLoginStatus(request); + if(null == jsonObject){ + return ResponseData.error(2401,Status.UNAUTHORIZED); + } if(userDto.getDocumentType().equals(DocumentTypeEnum.PASS)){ if(!userDto.getAccount().matches(REG_LOWERCASE)){ return ResponseData.error(Status.DOCUMENT_TYPE_PASS); @@ -137,6 +149,7 @@ } userDto.setLogonState("0"); userDto.setSalt(RoleEnum.REGULAR_EMPLOYEE.getCode()); + userDto.setSyncId(jsonObject.get("openid").toString()); userActionDao.userRegister(userDto); RuRelation ruRelation = new RuRelation(Long.parseLong(userInfo.getId()),Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode())); QueryWrapper wrapper = new QueryWrapper<>(); @@ -163,7 +176,17 @@ if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); } - userActionDao.updateUserImg(dto.getFileId(), dto.getUid()); + String filePrefix = ""; + if (StrUtil.isNotEmpty(dto.getBase64Image()) && dto.getBase64Image().startsWith("data:image")) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String[] imageValues = Base64ImgUtils.getImageType(dto.getBase64Image()); + filePrefix = uuid + imageValues[0]; + String pathName = filePath + filePrefix; + Base64ImgUtils.GenerateImage(imageValues[1], pathName); + } else { + return ResponseData.error(Status.FAIL); + } + userActionDao.updateUserImg(filePrefix, dto.getUid()); return ResponseData.success(); }catch (Exception e){ e.printStackTrace(); @@ -199,6 +222,12 @@ user.setDocumentTypeName(dictService.getDictNameByCode("documentType",user.getDocumentType())); Dict dict = userActionDao.getList(user.getSalt()).get(0); user.setSalt(dict.getName()); + if(StringUtil.isNotEmpty(user.getAvatar())){ + String path= filePath+user.getAvatar(); + File file=new File(path); + byte[] bytesByFile = getBytesByFile(file); + user.setAvatar(Base64.encode(bytesByFile)); + } return ResponseData.success(user); }catch (Exception e){ e.printStackTrace(); @@ -206,6 +235,29 @@ } } + public static byte[] getBytesByFile(File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + try { + fis = new FileInputStream(file); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + byte[] data = bos.toByteArray(); + return data; + } catch (Exception e) { + log.error("将文件转换成Byte数组失败", e); + } finally { + if (fis != null){ + fis.close(); + } + bos.close(); + } + return null; + } + public JSONObject getLoginStatus(HttpServletRequest request) { try { String token = request.getHeader("token"); @@ -262,17 +314,44 @@ } @Override + @Transactional(rollbackFor=Exception.class) public Object batchImportStaff(List list) { - List> lists = ListUtils.partition(list, 500); - list.forEach(bean -> { + List> staffInfoLists = ListUtils.partition(list, 500); + for (List staffInfoList : staffInfoLists) { + List accounts = staffInfoList.stream().map(StaffInfoDto::getAccount).distinct().collect(Collectors.toList()); + if(accounts.size() phones = staffInfoList.stream().map(StaffInfoDto::getPhone).distinct().collect(Collectors.toList()); + if(phones.size() ruRelations = new ArrayList<>(); + for (StaffInfoDto bean : list) { Long id = IdWorker.getId(); bean.setId(id); - if(StringUtil.isNotEmpty(bean.getPhone())){ + bean.setLogonState("1"); + if (StringUtil.isNotEmpty(bean.getPhone())) { bean.setLogonState("0"); } - }); - for (List staffInfoDtos : lists) { - userActionDao.batchImportStaff(staffInfoDtos); + switch (bean.getStaffType()){ + case "1":bean.setStaffType(RoleEnum.PROPERTY_PERSONNEL.getCode());break; + case "2":bean.setStaffType(RoleEnum.ROLE_PROPERTY_PERSONNEL.getCode());break; + case "3":bean.setStaffType(RoleEnum.REGULAR_EMPLOYEE.getCode());break; + } + ruRelations.add(new RuRelation(id,Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode()))); + } + List> ruRelationLists = ListUtils.partition(ruRelations, 500); + for (List relations : ruRelationLists) { + iUserRoleRelationService.saveBatch(relations); + } + for (List staffInfoDtoList : staffInfoLists) { + try { + userActionDao.batchImportStaff(staffInfoDtoList); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"导入数据人员编号或手机号已存在,请核对"); + } } return ResponseData.success(list); } @@ -307,12 +386,20 @@ @Override @Transactional public Object addUser(StaffInfoDto staffInfoDto) { - Long id = IdWorker.getId(); - staffInfoDto.setId(id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",staffInfoDto.getAccount()); + UserDto userDto = userActionDao.selectOne(wrapper); + if(null != userDto) return ResponseData.error("该员工工号已存在"); staffInfoDto.setLogonState("1"); if(StringUtil.isNotEmpty(staffInfoDto.getPhone())){ + wrapper.clear(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); staffInfoDto.setLogonState("0"); } + Long id = IdWorker.getId(); + staffInfoDto.setId(id); userActionDao.addUser(staffInfoDto); RuRelation ruRelation = new RuRelation(id,Long.parseLong(staffInfoDto.getStaffRole())); ruRelationMapper.insert(ruRelation); @@ -332,6 +419,19 @@ @Override public Object updateUser(StaffInfoDto staffInfoDto) { + UserDto userDto = userActionDao.selectById(staffInfoDto.getId()); + if(StringUtil.isNotEmpty(userDto.getPhone()) && staffInfoDto.getPhone().equals(userDto.getPhone())){ + staffInfoDto.setSyncId(userDto.getSyncId()); + }else if(StringUtil.isNotEmpty(userDto.getPhone())){ + staffInfoDto.setSyncId(null); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); + }else{ + staffInfoDto.setSyncId(null); + staffInfoDto.setPhone(null); + } userActionDao.updateUser(staffInfoDto); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("USERID",staffInfoDto.getId()).set("ROLEID", staffInfoDto.getStaffRole()); @@ -344,9 +444,7 @@ @Override public void download(String fileId,HttpServletResponse response) { try { - String filePath = "/tmp/"; File file = new File(filePath + fileId); - log.error("文件地址:"+ filePath +fileId); String resultFileName = fileId; resultFileName = URLEncoder.encode(resultFileName,"UTF-8").replaceAll("\\+", "%20"); response.setCharacterEncoding("UTF-8"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java index 4e746f3..0d0f699 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,17 +16,20 @@ import com.casic.missiles.modular.system.enums.DocumentTypeEnum; import com.casic.missiles.modular.system.enums.RoleEnum; import com.casic.missiles.modular.system.enums.Status; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.RuRelation; -import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.system.service.IUserRoleRelationService; import com.casic.missiles.modular.system.service.UserActionService; import com.casic.missiles.modular.system.utils.JJWTRootUtils; import com.casic.missiles.modular.system.utils.WXUserUtils; +import com.casic.missiles.modular.util.Base64ImgUtils; import dm.jdbc.util.StringUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.codec.Base64; import org.apache.commons.collections4.ListUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Service("UserActionService") @@ -63,7 +68,9 @@ private IBaseExportService iBaseExportService; @Resource - private ICasicFileService iCasicFileService; + private IUserRoleRelationService iUserRoleRelationService; + + final String filePath = "/tmp/casicSecurityCockpitMiniFile/"; @Override public Object getLoginToken(String code) { @@ -94,6 +101,7 @@ //String phone = WXUserUtils.getPhone(dto.getPhoneCode(),getToken()); String phone = dto.getPhoneCode(); userDto.setAttr1(phone); + userDto.setSyncId(jsonObject.get("openid").toString()); UserDto user = userActionDao.getUserInfo(userDto); if(null != user){ if(StringUtil.isEmpty(user.getSyncId())){ @@ -104,7 +112,7 @@ List list = userActionDao.getList(user.getSalt()); return ResponseData.success(list.get(0).getNum()); }else{ - return ResponseData.error(2402,Status.USER_ALREADY_NOT_REGISTERED); + return ResponseData.error(2402,Status.NOT_SUPPORT); } }catch (Exception e){ e.printStackTrace(); @@ -114,8 +122,12 @@ @Override @Transactional - public Object userRegister(UserDto userDto) { + public Object userRegister(UserDto userDto,HttpServletRequest request) { try { + JSONObject jsonObject = getLoginStatus(request); + if(null == jsonObject){ + return ResponseData.error(2401,Status.UNAUTHORIZED); + } if(userDto.getDocumentType().equals(DocumentTypeEnum.PASS)){ if(!userDto.getAccount().matches(REG_LOWERCASE)){ return ResponseData.error(Status.DOCUMENT_TYPE_PASS); @@ -137,6 +149,7 @@ } userDto.setLogonState("0"); userDto.setSalt(RoleEnum.REGULAR_EMPLOYEE.getCode()); + userDto.setSyncId(jsonObject.get("openid").toString()); userActionDao.userRegister(userDto); RuRelation ruRelation = new RuRelation(Long.parseLong(userInfo.getId()),Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode())); QueryWrapper wrapper = new QueryWrapper<>(); @@ -163,7 +176,17 @@ if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); } - userActionDao.updateUserImg(dto.getFileId(), dto.getUid()); + String filePrefix = ""; + if (StrUtil.isNotEmpty(dto.getBase64Image()) && dto.getBase64Image().startsWith("data:image")) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String[] imageValues = Base64ImgUtils.getImageType(dto.getBase64Image()); + filePrefix = uuid + imageValues[0]; + String pathName = filePath + filePrefix; + Base64ImgUtils.GenerateImage(imageValues[1], pathName); + } else { + return ResponseData.error(Status.FAIL); + } + userActionDao.updateUserImg(filePrefix, dto.getUid()); return ResponseData.success(); }catch (Exception e){ e.printStackTrace(); @@ -199,6 +222,12 @@ user.setDocumentTypeName(dictService.getDictNameByCode("documentType",user.getDocumentType())); Dict dict = userActionDao.getList(user.getSalt()).get(0); user.setSalt(dict.getName()); + if(StringUtil.isNotEmpty(user.getAvatar())){ + String path= filePath+user.getAvatar(); + File file=new File(path); + byte[] bytesByFile = getBytesByFile(file); + user.setAvatar(Base64.encode(bytesByFile)); + } return ResponseData.success(user); }catch (Exception e){ e.printStackTrace(); @@ -206,6 +235,29 @@ } } + public static byte[] getBytesByFile(File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + try { + fis = new FileInputStream(file); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + byte[] data = bos.toByteArray(); + return data; + } catch (Exception e) { + log.error("将文件转换成Byte数组失败", e); + } finally { + if (fis != null){ + fis.close(); + } + bos.close(); + } + return null; + } + public JSONObject getLoginStatus(HttpServletRequest request) { try { String token = request.getHeader("token"); @@ -262,17 +314,44 @@ } @Override + @Transactional(rollbackFor=Exception.class) public Object batchImportStaff(List list) { - List> lists = ListUtils.partition(list, 500); - list.forEach(bean -> { + List> staffInfoLists = ListUtils.partition(list, 500); + for (List staffInfoList : staffInfoLists) { + List accounts = staffInfoList.stream().map(StaffInfoDto::getAccount).distinct().collect(Collectors.toList()); + if(accounts.size() phones = staffInfoList.stream().map(StaffInfoDto::getPhone).distinct().collect(Collectors.toList()); + if(phones.size() ruRelations = new ArrayList<>(); + for (StaffInfoDto bean : list) { Long id = IdWorker.getId(); bean.setId(id); - if(StringUtil.isNotEmpty(bean.getPhone())){ + bean.setLogonState("1"); + if (StringUtil.isNotEmpty(bean.getPhone())) { bean.setLogonState("0"); } - }); - for (List staffInfoDtos : lists) { - userActionDao.batchImportStaff(staffInfoDtos); + switch (bean.getStaffType()){ + case "1":bean.setStaffType(RoleEnum.PROPERTY_PERSONNEL.getCode());break; + case "2":bean.setStaffType(RoleEnum.ROLE_PROPERTY_PERSONNEL.getCode());break; + case "3":bean.setStaffType(RoleEnum.REGULAR_EMPLOYEE.getCode());break; + } + ruRelations.add(new RuRelation(id,Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode()))); + } + List> ruRelationLists = ListUtils.partition(ruRelations, 500); + for (List relations : ruRelationLists) { + iUserRoleRelationService.saveBatch(relations); + } + for (List staffInfoDtoList : staffInfoLists) { + try { + userActionDao.batchImportStaff(staffInfoDtoList); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"导入数据人员编号或手机号已存在,请核对"); + } } return ResponseData.success(list); } @@ -307,12 +386,20 @@ @Override @Transactional public Object addUser(StaffInfoDto staffInfoDto) { - Long id = IdWorker.getId(); - staffInfoDto.setId(id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",staffInfoDto.getAccount()); + UserDto userDto = userActionDao.selectOne(wrapper); + if(null != userDto) return ResponseData.error("该员工工号已存在"); staffInfoDto.setLogonState("1"); if(StringUtil.isNotEmpty(staffInfoDto.getPhone())){ + wrapper.clear(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); staffInfoDto.setLogonState("0"); } + Long id = IdWorker.getId(); + staffInfoDto.setId(id); userActionDao.addUser(staffInfoDto); RuRelation ruRelation = new RuRelation(id,Long.parseLong(staffInfoDto.getStaffRole())); ruRelationMapper.insert(ruRelation); @@ -332,6 +419,19 @@ @Override public Object updateUser(StaffInfoDto staffInfoDto) { + UserDto userDto = userActionDao.selectById(staffInfoDto.getId()); + if(StringUtil.isNotEmpty(userDto.getPhone()) && staffInfoDto.getPhone().equals(userDto.getPhone())){ + staffInfoDto.setSyncId(userDto.getSyncId()); + }else if(StringUtil.isNotEmpty(userDto.getPhone())){ + staffInfoDto.setSyncId(null); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); + }else{ + staffInfoDto.setSyncId(null); + staffInfoDto.setPhone(null); + } userActionDao.updateUser(staffInfoDto); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("USERID",staffInfoDto.getId()).set("ROLEID", staffInfoDto.getStaffRole()); @@ -344,9 +444,7 @@ @Override public void download(String fileId,HttpServletResponse response) { try { - String filePath = "/tmp/"; File file = new File(filePath + fileId); - log.error("文件地址:"+ filePath +fileId); String resultFileName = fileId; resultFileName = URLEncoder.encode(resultFileName,"UTF-8").replaceAll("\\+", "%20"); response.setCharacterEncoding("UTF-8"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java index d466d79..0a95f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java @@ -13,6 +13,7 @@ import com.casic.missiles.modular.system.dao.VisitorApplyMapper; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.*; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.VisitorApply; import com.casic.missiles.modular.system.service.UserActionService; @@ -21,7 +22,9 @@ import dm.jdbc.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -57,7 +60,9 @@ private AbstractDictService dictService; @Override + @Transactional public Object add(VisitorApplyAddRequest visitorApplyAddRequest, HttpServletRequest request) { + try { JSONObject jsonObject = userActionService.getLoginStatus(request); if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); @@ -82,17 +87,20 @@ //String[] dataArr = {MessageEnum.TEST_MESSAGE.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),visitorApply.getVisitReason(),visitorApply.getVisitPosition()}; //JSONObject result = SendMassage(openid, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(messageId,"0",openid); + insertMessageLog(visitorApply.getId().toString(),"0",openid,""); }else{ - insertMessageLog(messageId,"1",openid); + insertMessageLog(visitorApply.getId().toString(),"1",openid,""); } } // 向提报人推送消息 String[] dataArr = {MessageEnum.APPLY_SUBMITTED.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),accTime}; - sentMessage(visitorApply,dataArr); + sentMessage(visitorApply,dataArr,VisitorApplyStatusDict.APPLY_SUBMITTED); return ResponseData.success(); } return ResponseData.error("访客申请失败"); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"编号重复生成,请重新提交"); + } } @Override @@ -153,13 +161,13 @@ if(VisitorApplyStatusDict.APPLY_PASSED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_PASSED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_PASSED); } //申请不通过 if(VisitorApplyStatusDict.APPLY_FAILED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_FAILED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_FAILED); } } } @@ -172,7 +180,7 @@ @Override public Object getMessageInfo(String messageId, HttpServletRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_no" , messageId); + wrapper.eq("id" , messageId); List users = visitorApplyMapper.selectList(wrapper); if(users != null && users.size() != 0){ return ResponseData.success(users.get(0)); @@ -192,14 +200,11 @@ UserDto userDto = new UserDto(); userDto.setSyncId(openid); UserDto userInfo = userActionMapper.getUserInfo(userDto); - /* String flag = ""; - QueryWrapper ruRelationWrapper = new QueryWrapper<>(); - ruRelationWrapper.eq("USERID",userInfo.getId()); - RuRelation ruRelation = ruRelationMapper.selectOne(ruRelationWrapper); - if(String.valueOf(ruRelation.getRoleId()).equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ - flag = "true"; - }*/ - Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount()); + String flag = "regularEmployee"; + if(userInfo.getSalt().equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ + flag = "propertyPersonnel"; + } + Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount(),flag); for (HashMap map : resMap.getRecords()){ map.put("apply_time",map.get("in_time").toString()+"-"+map.get("out_time").toString()); map.put("send_time",DateUtils.parseDate(map.get("create_time").toString()).getTime()); @@ -275,15 +280,15 @@ } - private void sentMessage(VisitorApply visitorApply,String[] dataArr) { + private void sentMessage(VisitorApply visitorApply,String[] dataArr,String applyStatus) { String toUser = getToUser(visitorApply.getStaffCode()); if(StringUtil.isNotEmpty(toUser)){ JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); //JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(visitorApply.getApplyNo(),"0",toUser); + insertMessageLog(visitorApply.getId().toString(),"0",toUser,applyStatus); }else{ - insertMessageLog(visitorApply.getApplyNo(),"1",toUser); + insertMessageLog(visitorApply.getId().toString(),"1",toUser,applyStatus); } } } @@ -312,8 +317,8 @@ } return userInfo.getSyncId(); } - public void insertMessageLog(String messageId,String status,String toUser){ - MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser); + public void insertMessageLog(String messageId,String status,String toUser,String applyStatus){ + MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser,applyStatus); userActionMapper.insertMessageLog(message); } private List supplementList(List visitorApplyList){ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java index 4e746f3..0d0f699 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,17 +16,20 @@ import com.casic.missiles.modular.system.enums.DocumentTypeEnum; import com.casic.missiles.modular.system.enums.RoleEnum; import com.casic.missiles.modular.system.enums.Status; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.RuRelation; -import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.system.service.IUserRoleRelationService; import com.casic.missiles.modular.system.service.UserActionService; import com.casic.missiles.modular.system.utils.JJWTRootUtils; import com.casic.missiles.modular.system.utils.WXUserUtils; +import com.casic.missiles.modular.util.Base64ImgUtils; import dm.jdbc.util.StringUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.codec.Base64; import org.apache.commons.collections4.ListUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Service("UserActionService") @@ -63,7 +68,9 @@ private IBaseExportService iBaseExportService; @Resource - private ICasicFileService iCasicFileService; + private IUserRoleRelationService iUserRoleRelationService; + + final String filePath = "/tmp/casicSecurityCockpitMiniFile/"; @Override public Object getLoginToken(String code) { @@ -94,6 +101,7 @@ //String phone = WXUserUtils.getPhone(dto.getPhoneCode(),getToken()); String phone = dto.getPhoneCode(); userDto.setAttr1(phone); + userDto.setSyncId(jsonObject.get("openid").toString()); UserDto user = userActionDao.getUserInfo(userDto); if(null != user){ if(StringUtil.isEmpty(user.getSyncId())){ @@ -104,7 +112,7 @@ List list = userActionDao.getList(user.getSalt()); return ResponseData.success(list.get(0).getNum()); }else{ - return ResponseData.error(2402,Status.USER_ALREADY_NOT_REGISTERED); + return ResponseData.error(2402,Status.NOT_SUPPORT); } }catch (Exception e){ e.printStackTrace(); @@ -114,8 +122,12 @@ @Override @Transactional - public Object userRegister(UserDto userDto) { + public Object userRegister(UserDto userDto,HttpServletRequest request) { try { + JSONObject jsonObject = getLoginStatus(request); + if(null == jsonObject){ + return ResponseData.error(2401,Status.UNAUTHORIZED); + } if(userDto.getDocumentType().equals(DocumentTypeEnum.PASS)){ if(!userDto.getAccount().matches(REG_LOWERCASE)){ return ResponseData.error(Status.DOCUMENT_TYPE_PASS); @@ -137,6 +149,7 @@ } userDto.setLogonState("0"); userDto.setSalt(RoleEnum.REGULAR_EMPLOYEE.getCode()); + userDto.setSyncId(jsonObject.get("openid").toString()); userActionDao.userRegister(userDto); RuRelation ruRelation = new RuRelation(Long.parseLong(userInfo.getId()),Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode())); QueryWrapper wrapper = new QueryWrapper<>(); @@ -163,7 +176,17 @@ if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); } - userActionDao.updateUserImg(dto.getFileId(), dto.getUid()); + String filePrefix = ""; + if (StrUtil.isNotEmpty(dto.getBase64Image()) && dto.getBase64Image().startsWith("data:image")) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String[] imageValues = Base64ImgUtils.getImageType(dto.getBase64Image()); + filePrefix = uuid + imageValues[0]; + String pathName = filePath + filePrefix; + Base64ImgUtils.GenerateImage(imageValues[1], pathName); + } else { + return ResponseData.error(Status.FAIL); + } + userActionDao.updateUserImg(filePrefix, dto.getUid()); return ResponseData.success(); }catch (Exception e){ e.printStackTrace(); @@ -199,6 +222,12 @@ user.setDocumentTypeName(dictService.getDictNameByCode("documentType",user.getDocumentType())); Dict dict = userActionDao.getList(user.getSalt()).get(0); user.setSalt(dict.getName()); + if(StringUtil.isNotEmpty(user.getAvatar())){ + String path= filePath+user.getAvatar(); + File file=new File(path); + byte[] bytesByFile = getBytesByFile(file); + user.setAvatar(Base64.encode(bytesByFile)); + } return ResponseData.success(user); }catch (Exception e){ e.printStackTrace(); @@ -206,6 +235,29 @@ } } + public static byte[] getBytesByFile(File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + try { + fis = new FileInputStream(file); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + byte[] data = bos.toByteArray(); + return data; + } catch (Exception e) { + log.error("将文件转换成Byte数组失败", e); + } finally { + if (fis != null){ + fis.close(); + } + bos.close(); + } + return null; + } + public JSONObject getLoginStatus(HttpServletRequest request) { try { String token = request.getHeader("token"); @@ -262,17 +314,44 @@ } @Override + @Transactional(rollbackFor=Exception.class) public Object batchImportStaff(List list) { - List> lists = ListUtils.partition(list, 500); - list.forEach(bean -> { + List> staffInfoLists = ListUtils.partition(list, 500); + for (List staffInfoList : staffInfoLists) { + List accounts = staffInfoList.stream().map(StaffInfoDto::getAccount).distinct().collect(Collectors.toList()); + if(accounts.size() phones = staffInfoList.stream().map(StaffInfoDto::getPhone).distinct().collect(Collectors.toList()); + if(phones.size() ruRelations = new ArrayList<>(); + for (StaffInfoDto bean : list) { Long id = IdWorker.getId(); bean.setId(id); - if(StringUtil.isNotEmpty(bean.getPhone())){ + bean.setLogonState("1"); + if (StringUtil.isNotEmpty(bean.getPhone())) { bean.setLogonState("0"); } - }); - for (List staffInfoDtos : lists) { - userActionDao.batchImportStaff(staffInfoDtos); + switch (bean.getStaffType()){ + case "1":bean.setStaffType(RoleEnum.PROPERTY_PERSONNEL.getCode());break; + case "2":bean.setStaffType(RoleEnum.ROLE_PROPERTY_PERSONNEL.getCode());break; + case "3":bean.setStaffType(RoleEnum.REGULAR_EMPLOYEE.getCode());break; + } + ruRelations.add(new RuRelation(id,Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode()))); + } + List> ruRelationLists = ListUtils.partition(ruRelations, 500); + for (List relations : ruRelationLists) { + iUserRoleRelationService.saveBatch(relations); + } + for (List staffInfoDtoList : staffInfoLists) { + try { + userActionDao.batchImportStaff(staffInfoDtoList); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"导入数据人员编号或手机号已存在,请核对"); + } } return ResponseData.success(list); } @@ -307,12 +386,20 @@ @Override @Transactional public Object addUser(StaffInfoDto staffInfoDto) { - Long id = IdWorker.getId(); - staffInfoDto.setId(id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",staffInfoDto.getAccount()); + UserDto userDto = userActionDao.selectOne(wrapper); + if(null != userDto) return ResponseData.error("该员工工号已存在"); staffInfoDto.setLogonState("1"); if(StringUtil.isNotEmpty(staffInfoDto.getPhone())){ + wrapper.clear(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); staffInfoDto.setLogonState("0"); } + Long id = IdWorker.getId(); + staffInfoDto.setId(id); userActionDao.addUser(staffInfoDto); RuRelation ruRelation = new RuRelation(id,Long.parseLong(staffInfoDto.getStaffRole())); ruRelationMapper.insert(ruRelation); @@ -332,6 +419,19 @@ @Override public Object updateUser(StaffInfoDto staffInfoDto) { + UserDto userDto = userActionDao.selectById(staffInfoDto.getId()); + if(StringUtil.isNotEmpty(userDto.getPhone()) && staffInfoDto.getPhone().equals(userDto.getPhone())){ + staffInfoDto.setSyncId(userDto.getSyncId()); + }else if(StringUtil.isNotEmpty(userDto.getPhone())){ + staffInfoDto.setSyncId(null); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); + }else{ + staffInfoDto.setSyncId(null); + staffInfoDto.setPhone(null); + } userActionDao.updateUser(staffInfoDto); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("USERID",staffInfoDto.getId()).set("ROLEID", staffInfoDto.getStaffRole()); @@ -344,9 +444,7 @@ @Override public void download(String fileId,HttpServletResponse response) { try { - String filePath = "/tmp/"; File file = new File(filePath + fileId); - log.error("文件地址:"+ filePath +fileId); String resultFileName = fileId; resultFileName = URLEncoder.encode(resultFileName,"UTF-8").replaceAll("\\+", "%20"); response.setCharacterEncoding("UTF-8"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java index d466d79..0a95f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java @@ -13,6 +13,7 @@ import com.casic.missiles.modular.system.dao.VisitorApplyMapper; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.*; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.VisitorApply; import com.casic.missiles.modular.system.service.UserActionService; @@ -21,7 +22,9 @@ import dm.jdbc.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -57,7 +60,9 @@ private AbstractDictService dictService; @Override + @Transactional public Object add(VisitorApplyAddRequest visitorApplyAddRequest, HttpServletRequest request) { + try { JSONObject jsonObject = userActionService.getLoginStatus(request); if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); @@ -82,17 +87,20 @@ //String[] dataArr = {MessageEnum.TEST_MESSAGE.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),visitorApply.getVisitReason(),visitorApply.getVisitPosition()}; //JSONObject result = SendMassage(openid, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(messageId,"0",openid); + insertMessageLog(visitorApply.getId().toString(),"0",openid,""); }else{ - insertMessageLog(messageId,"1",openid); + insertMessageLog(visitorApply.getId().toString(),"1",openid,""); } } // 向提报人推送消息 String[] dataArr = {MessageEnum.APPLY_SUBMITTED.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),accTime}; - sentMessage(visitorApply,dataArr); + sentMessage(visitorApply,dataArr,VisitorApplyStatusDict.APPLY_SUBMITTED); return ResponseData.success(); } return ResponseData.error("访客申请失败"); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"编号重复生成,请重新提交"); + } } @Override @@ -153,13 +161,13 @@ if(VisitorApplyStatusDict.APPLY_PASSED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_PASSED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_PASSED); } //申请不通过 if(VisitorApplyStatusDict.APPLY_FAILED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_FAILED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_FAILED); } } } @@ -172,7 +180,7 @@ @Override public Object getMessageInfo(String messageId, HttpServletRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_no" , messageId); + wrapper.eq("id" , messageId); List users = visitorApplyMapper.selectList(wrapper); if(users != null && users.size() != 0){ return ResponseData.success(users.get(0)); @@ -192,14 +200,11 @@ UserDto userDto = new UserDto(); userDto.setSyncId(openid); UserDto userInfo = userActionMapper.getUserInfo(userDto); - /* String flag = ""; - QueryWrapper ruRelationWrapper = new QueryWrapper<>(); - ruRelationWrapper.eq("USERID",userInfo.getId()); - RuRelation ruRelation = ruRelationMapper.selectOne(ruRelationWrapper); - if(String.valueOf(ruRelation.getRoleId()).equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ - flag = "true"; - }*/ - Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount()); + String flag = "regularEmployee"; + if(userInfo.getSalt().equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ + flag = "propertyPersonnel"; + } + Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount(),flag); for (HashMap map : resMap.getRecords()){ map.put("apply_time",map.get("in_time").toString()+"-"+map.get("out_time").toString()); map.put("send_time",DateUtils.parseDate(map.get("create_time").toString()).getTime()); @@ -275,15 +280,15 @@ } - private void sentMessage(VisitorApply visitorApply,String[] dataArr) { + private void sentMessage(VisitorApply visitorApply,String[] dataArr,String applyStatus) { String toUser = getToUser(visitorApply.getStaffCode()); if(StringUtil.isNotEmpty(toUser)){ JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); //JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(visitorApply.getApplyNo(),"0",toUser); + insertMessageLog(visitorApply.getId().toString(),"0",toUser,applyStatus); }else{ - insertMessageLog(visitorApply.getApplyNo(),"1",toUser); + insertMessageLog(visitorApply.getId().toString(),"1",toUser,applyStatus); } } } @@ -312,8 +317,8 @@ } return userInfo.getSyncId(); } - public void insertMessageLog(String messageId,String status,String toUser){ - MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser); + public void insertMessageLog(String messageId,String status,String toUser,String applyStatus){ + MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser,applyStatus); userActionMapper.insertMessageLog(message); } private List supplementList(List visitorApplyList){ diff --git a/casic-web/src/main/resources/mapper/MessageMapper.xml b/casic-web/src/main/resources/mapper/MessageMapper.xml index 4a6f566..a7c4aee 100644 --- a/casic-web/src/main/resources/mapper/MessageMapper.xml +++ b/casic-web/src/main/resources/mapper/MessageMapper.xml @@ -12,7 +12,7 @@ su.name FROM bus_message bm - LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.apply_no + LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.id LEFT JOIN sys_user su ON bm.open_id = su.SYNC_ID where bm.open_id IS NOT NULL and bm.open_id != '' and bva.apply_no is not null @@ -31,7 +31,7 @@ and bm.`status` = #{request.status} - and su.ACCOUNT like concat('%', #{request.account}, '%') + and su.ACCOUNT= #{request.account} and DATE_FORMAT( bm.create_time, '%Y-%m-%d %H:%m' ) >= #{request.createTime} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java index 4e746f3..0d0f699 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,17 +16,20 @@ import com.casic.missiles.modular.system.enums.DocumentTypeEnum; import com.casic.missiles.modular.system.enums.RoleEnum; import com.casic.missiles.modular.system.enums.Status; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.RuRelation; -import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.system.service.IUserRoleRelationService; import com.casic.missiles.modular.system.service.UserActionService; import com.casic.missiles.modular.system.utils.JJWTRootUtils; import com.casic.missiles.modular.system.utils.WXUserUtils; +import com.casic.missiles.modular.util.Base64ImgUtils; import dm.jdbc.util.StringUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.codec.Base64; import org.apache.commons.collections4.ListUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Service("UserActionService") @@ -63,7 +68,9 @@ private IBaseExportService iBaseExportService; @Resource - private ICasicFileService iCasicFileService; + private IUserRoleRelationService iUserRoleRelationService; + + final String filePath = "/tmp/casicSecurityCockpitMiniFile/"; @Override public Object getLoginToken(String code) { @@ -94,6 +101,7 @@ //String phone = WXUserUtils.getPhone(dto.getPhoneCode(),getToken()); String phone = dto.getPhoneCode(); userDto.setAttr1(phone); + userDto.setSyncId(jsonObject.get("openid").toString()); UserDto user = userActionDao.getUserInfo(userDto); if(null != user){ if(StringUtil.isEmpty(user.getSyncId())){ @@ -104,7 +112,7 @@ List list = userActionDao.getList(user.getSalt()); return ResponseData.success(list.get(0).getNum()); }else{ - return ResponseData.error(2402,Status.USER_ALREADY_NOT_REGISTERED); + return ResponseData.error(2402,Status.NOT_SUPPORT); } }catch (Exception e){ e.printStackTrace(); @@ -114,8 +122,12 @@ @Override @Transactional - public Object userRegister(UserDto userDto) { + public Object userRegister(UserDto userDto,HttpServletRequest request) { try { + JSONObject jsonObject = getLoginStatus(request); + if(null == jsonObject){ + return ResponseData.error(2401,Status.UNAUTHORIZED); + } if(userDto.getDocumentType().equals(DocumentTypeEnum.PASS)){ if(!userDto.getAccount().matches(REG_LOWERCASE)){ return ResponseData.error(Status.DOCUMENT_TYPE_PASS); @@ -137,6 +149,7 @@ } userDto.setLogonState("0"); userDto.setSalt(RoleEnum.REGULAR_EMPLOYEE.getCode()); + userDto.setSyncId(jsonObject.get("openid").toString()); userActionDao.userRegister(userDto); RuRelation ruRelation = new RuRelation(Long.parseLong(userInfo.getId()),Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode())); QueryWrapper wrapper = new QueryWrapper<>(); @@ -163,7 +176,17 @@ if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); } - userActionDao.updateUserImg(dto.getFileId(), dto.getUid()); + String filePrefix = ""; + if (StrUtil.isNotEmpty(dto.getBase64Image()) && dto.getBase64Image().startsWith("data:image")) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String[] imageValues = Base64ImgUtils.getImageType(dto.getBase64Image()); + filePrefix = uuid + imageValues[0]; + String pathName = filePath + filePrefix; + Base64ImgUtils.GenerateImage(imageValues[1], pathName); + } else { + return ResponseData.error(Status.FAIL); + } + userActionDao.updateUserImg(filePrefix, dto.getUid()); return ResponseData.success(); }catch (Exception e){ e.printStackTrace(); @@ -199,6 +222,12 @@ user.setDocumentTypeName(dictService.getDictNameByCode("documentType",user.getDocumentType())); Dict dict = userActionDao.getList(user.getSalt()).get(0); user.setSalt(dict.getName()); + if(StringUtil.isNotEmpty(user.getAvatar())){ + String path= filePath+user.getAvatar(); + File file=new File(path); + byte[] bytesByFile = getBytesByFile(file); + user.setAvatar(Base64.encode(bytesByFile)); + } return ResponseData.success(user); }catch (Exception e){ e.printStackTrace(); @@ -206,6 +235,29 @@ } } + public static byte[] getBytesByFile(File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + try { + fis = new FileInputStream(file); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + byte[] data = bos.toByteArray(); + return data; + } catch (Exception e) { + log.error("将文件转换成Byte数组失败", e); + } finally { + if (fis != null){ + fis.close(); + } + bos.close(); + } + return null; + } + public JSONObject getLoginStatus(HttpServletRequest request) { try { String token = request.getHeader("token"); @@ -262,17 +314,44 @@ } @Override + @Transactional(rollbackFor=Exception.class) public Object batchImportStaff(List list) { - List> lists = ListUtils.partition(list, 500); - list.forEach(bean -> { + List> staffInfoLists = ListUtils.partition(list, 500); + for (List staffInfoList : staffInfoLists) { + List accounts = staffInfoList.stream().map(StaffInfoDto::getAccount).distinct().collect(Collectors.toList()); + if(accounts.size() phones = staffInfoList.stream().map(StaffInfoDto::getPhone).distinct().collect(Collectors.toList()); + if(phones.size() ruRelations = new ArrayList<>(); + for (StaffInfoDto bean : list) { Long id = IdWorker.getId(); bean.setId(id); - if(StringUtil.isNotEmpty(bean.getPhone())){ + bean.setLogonState("1"); + if (StringUtil.isNotEmpty(bean.getPhone())) { bean.setLogonState("0"); } - }); - for (List staffInfoDtos : lists) { - userActionDao.batchImportStaff(staffInfoDtos); + switch (bean.getStaffType()){ + case "1":bean.setStaffType(RoleEnum.PROPERTY_PERSONNEL.getCode());break; + case "2":bean.setStaffType(RoleEnum.ROLE_PROPERTY_PERSONNEL.getCode());break; + case "3":bean.setStaffType(RoleEnum.REGULAR_EMPLOYEE.getCode());break; + } + ruRelations.add(new RuRelation(id,Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode()))); + } + List> ruRelationLists = ListUtils.partition(ruRelations, 500); + for (List relations : ruRelationLists) { + iUserRoleRelationService.saveBatch(relations); + } + for (List staffInfoDtoList : staffInfoLists) { + try { + userActionDao.batchImportStaff(staffInfoDtoList); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"导入数据人员编号或手机号已存在,请核对"); + } } return ResponseData.success(list); } @@ -307,12 +386,20 @@ @Override @Transactional public Object addUser(StaffInfoDto staffInfoDto) { - Long id = IdWorker.getId(); - staffInfoDto.setId(id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",staffInfoDto.getAccount()); + UserDto userDto = userActionDao.selectOne(wrapper); + if(null != userDto) return ResponseData.error("该员工工号已存在"); staffInfoDto.setLogonState("1"); if(StringUtil.isNotEmpty(staffInfoDto.getPhone())){ + wrapper.clear(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); staffInfoDto.setLogonState("0"); } + Long id = IdWorker.getId(); + staffInfoDto.setId(id); userActionDao.addUser(staffInfoDto); RuRelation ruRelation = new RuRelation(id,Long.parseLong(staffInfoDto.getStaffRole())); ruRelationMapper.insert(ruRelation); @@ -332,6 +419,19 @@ @Override public Object updateUser(StaffInfoDto staffInfoDto) { + UserDto userDto = userActionDao.selectById(staffInfoDto.getId()); + if(StringUtil.isNotEmpty(userDto.getPhone()) && staffInfoDto.getPhone().equals(userDto.getPhone())){ + staffInfoDto.setSyncId(userDto.getSyncId()); + }else if(StringUtil.isNotEmpty(userDto.getPhone())){ + staffInfoDto.setSyncId(null); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); + }else{ + staffInfoDto.setSyncId(null); + staffInfoDto.setPhone(null); + } userActionDao.updateUser(staffInfoDto); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("USERID",staffInfoDto.getId()).set("ROLEID", staffInfoDto.getStaffRole()); @@ -344,9 +444,7 @@ @Override public void download(String fileId,HttpServletResponse response) { try { - String filePath = "/tmp/"; File file = new File(filePath + fileId); - log.error("文件地址:"+ filePath +fileId); String resultFileName = fileId; resultFileName = URLEncoder.encode(resultFileName,"UTF-8").replaceAll("\\+", "%20"); response.setCharacterEncoding("UTF-8"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java index d466d79..0a95f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java @@ -13,6 +13,7 @@ import com.casic.missiles.modular.system.dao.VisitorApplyMapper; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.*; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.VisitorApply; import com.casic.missiles.modular.system.service.UserActionService; @@ -21,7 +22,9 @@ import dm.jdbc.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -57,7 +60,9 @@ private AbstractDictService dictService; @Override + @Transactional public Object add(VisitorApplyAddRequest visitorApplyAddRequest, HttpServletRequest request) { + try { JSONObject jsonObject = userActionService.getLoginStatus(request); if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); @@ -82,17 +87,20 @@ //String[] dataArr = {MessageEnum.TEST_MESSAGE.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),visitorApply.getVisitReason(),visitorApply.getVisitPosition()}; //JSONObject result = SendMassage(openid, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(messageId,"0",openid); + insertMessageLog(visitorApply.getId().toString(),"0",openid,""); }else{ - insertMessageLog(messageId,"1",openid); + insertMessageLog(visitorApply.getId().toString(),"1",openid,""); } } // 向提报人推送消息 String[] dataArr = {MessageEnum.APPLY_SUBMITTED.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),accTime}; - sentMessage(visitorApply,dataArr); + sentMessage(visitorApply,dataArr,VisitorApplyStatusDict.APPLY_SUBMITTED); return ResponseData.success(); } return ResponseData.error("访客申请失败"); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"编号重复生成,请重新提交"); + } } @Override @@ -153,13 +161,13 @@ if(VisitorApplyStatusDict.APPLY_PASSED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_PASSED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_PASSED); } //申请不通过 if(VisitorApplyStatusDict.APPLY_FAILED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_FAILED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_FAILED); } } } @@ -172,7 +180,7 @@ @Override public Object getMessageInfo(String messageId, HttpServletRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_no" , messageId); + wrapper.eq("id" , messageId); List users = visitorApplyMapper.selectList(wrapper); if(users != null && users.size() != 0){ return ResponseData.success(users.get(0)); @@ -192,14 +200,11 @@ UserDto userDto = new UserDto(); userDto.setSyncId(openid); UserDto userInfo = userActionMapper.getUserInfo(userDto); - /* String flag = ""; - QueryWrapper ruRelationWrapper = new QueryWrapper<>(); - ruRelationWrapper.eq("USERID",userInfo.getId()); - RuRelation ruRelation = ruRelationMapper.selectOne(ruRelationWrapper); - if(String.valueOf(ruRelation.getRoleId()).equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ - flag = "true"; - }*/ - Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount()); + String flag = "regularEmployee"; + if(userInfo.getSalt().equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ + flag = "propertyPersonnel"; + } + Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount(),flag); for (HashMap map : resMap.getRecords()){ map.put("apply_time",map.get("in_time").toString()+"-"+map.get("out_time").toString()); map.put("send_time",DateUtils.parseDate(map.get("create_time").toString()).getTime()); @@ -275,15 +280,15 @@ } - private void sentMessage(VisitorApply visitorApply,String[] dataArr) { + private void sentMessage(VisitorApply visitorApply,String[] dataArr,String applyStatus) { String toUser = getToUser(visitorApply.getStaffCode()); if(StringUtil.isNotEmpty(toUser)){ JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); //JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(visitorApply.getApplyNo(),"0",toUser); + insertMessageLog(visitorApply.getId().toString(),"0",toUser,applyStatus); }else{ - insertMessageLog(visitorApply.getApplyNo(),"1",toUser); + insertMessageLog(visitorApply.getId().toString(),"1",toUser,applyStatus); } } } @@ -312,8 +317,8 @@ } return userInfo.getSyncId(); } - public void insertMessageLog(String messageId,String status,String toUser){ - MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser); + public void insertMessageLog(String messageId,String status,String toUser,String applyStatus){ + MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser,applyStatus); userActionMapper.insertMessageLog(message); } private List supplementList(List visitorApplyList){ diff --git a/casic-web/src/main/resources/mapper/MessageMapper.xml b/casic-web/src/main/resources/mapper/MessageMapper.xml index 4a6f566..a7c4aee 100644 --- a/casic-web/src/main/resources/mapper/MessageMapper.xml +++ b/casic-web/src/main/resources/mapper/MessageMapper.xml @@ -12,7 +12,7 @@ su.name FROM bus_message bm - LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.apply_no + LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.id LEFT JOIN sys_user su ON bm.open_id = su.SYNC_ID where bm.open_id IS NOT NULL and bm.open_id != '' and bva.apply_no is not null @@ -31,7 +31,7 @@ and bm.`status` = #{request.status} - and su.ACCOUNT like concat('%', #{request.account}, '%') + and su.ACCOUNT= #{request.account} and DATE_FORMAT( bm.create_time, '%Y-%m-%d %H:%m' ) >= #{request.createTime} diff --git a/casic-web/src/main/resources/mapper/UserActionMapper.xml b/casic-web/src/main/resources/mapper/UserActionMapper.xml index 122bb1f..8e6823b 100644 --- a/casic-web/src/main/resources/mapper/UserActionMapper.xml +++ b/casic-web/src/main/resources/mapper/UserActionMapper.xml @@ -33,7 +33,7 @@ - UPDATE sys_user SET `PHONE` = #{userDto.phone},`SALT`=#{userDto.salt},logon_state=#{userDto.logonState},DOCUMENT_TYPE=#{userDto.documentType} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} + UPDATE sys_user SET `PHONE` = #{userDto.phone},`SALT`=#{userDto.salt},logon_state=#{userDto.logonState},DOCUMENT_TYPE=#{userDto.documentType},`SYNC_ID` = #{userDto.syncId} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} UPDATE sys_user SET `SYNC_ID` = #{userDto.syncId},logon_state=#{userDto.logonState} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} and `PHONE` = #{userDto.phone} @@ -43,8 +43,8 @@ VALUES (#{id},#{userId},#{roleId},DATE_FORMAT(#{updateTime},'%Y-%m-%d %H:%i:%S')) - INSERT INTO bus_message ( `ID`, `MESSAGE_ID`, `STATUS`,`CREATE_TIME`,`OPEN_ID`) - VALUES (#{message.id},#{message.messageId},#{message.status},DATE_FORMAT(#{message.createTime},'%Y-%m-%d %H:%i:%S'),#{message.openId}) + INSERT INTO bus_message ( `ID`, `MESSAGE_ID`, `STATUS`,`CREATE_TIME`,`OPEN_ID`,`apply_status`) + VALUES (#{message.id},#{message.messageId},#{message.status},DATE_FORMAT(#{message.createTime},'%Y-%m-%d %H:%i:%S'),#{message.openId},#{message.applyStatus}) UPDATE sys_user SET `AVATAR` = #{fileId} WHERE `ID` = #{uid} @@ -170,7 +170,8 @@ SET `SALT` = #{user.staffType}, `PHONE` = #{user.phone}, `DOCUMENT_TYPE` = #{user.documentType}, - `remark` = #{user.remark} + `remark` = #{user.remark}, + `SYNC_ID` = #{user.syncId} WHERE `ID` = #{user.id} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java index 4844fa3..02b1d9d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java @@ -11,6 +11,7 @@ import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.Status; import com.casic.missiles.modular.system.handler.CommonExcelListener; +import com.casic.missiles.modular.system.service.ICasicFileService; import com.casic.missiles.modular.system.service.UserActionService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -70,8 +71,8 @@ */ @RequestMapping("userRegister") @ResponseBody - public Object userRegister(@RequestBody UserDto userDto){ - return userActionService.userRegister(userDto); + public Object userRegister(@RequestBody UserDto userDto, HttpServletRequest request){ + return userActionService.userRegister(userDto,request); } /** * 新增用户信息 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java index a479c5e..de8770d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/VisitorApplyMapper.java @@ -21,7 +21,7 @@ Page selectApplyList(Page page,@Param("request") VisitorApplyListRequest request); - Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user); + Page> getMessageList(Page> page,@Param("openid") String openid,@Param("user")String user,@Param("flag")String flag); String selectApplyNo(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java index 97ed177..bffecfc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/MessageDto.java @@ -34,6 +34,10 @@ /** * 申请状态 */ + private String applyStatus; + /** + * 申请状态 + */ @ExcelProperty(value = "申请状态",order = 3) private String visitorApplyStatus; /** @@ -61,12 +65,13 @@ */ private String openId; - public MessageDto(String id, String messageId, String status, String createTime, String openId) { + public MessageDto(String id, String messageId, String status, String createTime, String openId,String applyStatus) { this.id = id; this.messageId = messageId; this.status = status; this.createTime = createTime; this.openId = openId; + this.applyStatus = applyStatus; } public MessageDto() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java index 89fe7c9..8f12f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/ParamsDto.java @@ -8,6 +8,6 @@ private String code;//微信登录code private String phoneCode;//获取手机号code - private String fileId;//文件id + private String base64Image;//文件id private String uid;//用户id } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java index 7a86231..c72d89c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/StaffInfoDto.java @@ -21,4 +21,5 @@ private String remark;//备注 private String logonState;//是否注册 + private String syncId; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java index 095d526..56d36ae 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/UserDto.java @@ -21,44 +21,63 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class UserDto { + @TableField("id") private String id;//主键id + @TableField("avatar") private String avatar;//头像 + @ExcelProperty(value = "证件编号",order = 0) @TableField("account") private String account;//账号 + @TableField("salt") private String salt;//md5密码盐 + @ExcelProperty(value = "员工姓名",order = 1) @TableField("name") private String name;//名字 + @TableField("sex") private String sex;//性别 + @TableField("phone") @ExcelProperty(value = "电话",order = 3) private String phone;//电话 - @TableField("syncId") + + @TableField("sync_id") private String syncId;//原ID + @TableField("attr1") private String attr1;//预留字段 - @TableField("documentType") + + @TableField("document_type") private String documentType;//证件类型 + @TableField("remark") @ExcelProperty(value = "备注",order = 7) private String remark;//备注 + @TableField(exist = false) @ExcelProperty(value = "证件类型",order = 2) private String documentTypeName;//证件类型名称 + @TableField("logon_state") @ExcelProperty(value = "是否已在小程序注册",order = 4) private String logonState; + @TableField(exist = false) private String staffType; + + @TableField(exist = false) @ExcelProperty(value = "员工类型名称",order = 5) private String staffTypeName; + @TableField(exist = false) private String staffRole; + + @TableField(exist = false) @ExcelProperty(value = "员工角色",order = 6) private String staffRoleName; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java index 353422f..9b12ccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java @@ -15,6 +15,8 @@ String PHONE_GET_FAILED = "手机号获取失败"; String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配"; String TOKEN_EXPIRES = "登录过期,请重新登录"; + String UNAUTHORIZED = "微信未授权,请重新刷新小程序"; + String NOT_SUPPORT = "暂不支持非微信绑定手机号进行登录"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java new file mode 100644 index 0000000..6383abb --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/exception/BusinessException.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + * @Author: wangpeng + * @Date: 2022/11/24 17:52 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java index b40b395..222e9f7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/handler/GlobalExceptionHandler.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.handler; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DuplicateKeyException; @@ -15,11 +16,11 @@ public class GlobalExceptionHandler { /** - * 编号重复异常捕获处理 + * 业务异常捕获处理 */ @ResponseBody - @ExceptionHandler({DuplicateKeyException.class}) - public Object handleDuplicateKeyException() { - return ResponseData.error(500,"编号生成重复,请重新提交"); + @ExceptionHandler({BusinessException.class}) + public Object handleError(BusinessException exception) { + return ResponseData.error(exception.getCode(), exception.getMessage()); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java index 0289c88..ed3f4ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java @@ -12,7 +12,7 @@ public interface UserActionService extends IService { - Object userRegister(UserDto userDto); + Object userRegister(UserDto userDto,HttpServletRequest request); Object userLogin(ParamsDto dto, HttpServletRequest request); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java index 4e746f3..0d0f699 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,17 +16,20 @@ import com.casic.missiles.modular.system.enums.DocumentTypeEnum; import com.casic.missiles.modular.system.enums.RoleEnum; import com.casic.missiles.modular.system.enums.Status; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.RuRelation; -import com.casic.missiles.modular.system.service.ICasicFileService; +import com.casic.missiles.modular.system.service.IUserRoleRelationService; import com.casic.missiles.modular.system.service.UserActionService; import com.casic.missiles.modular.system.utils.JJWTRootUtils; import com.casic.missiles.modular.system.utils.WXUserUtils; +import com.casic.missiles.modular.util.Base64ImgUtils; import dm.jdbc.util.StringUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.codec.Base64; import org.apache.commons.collections4.ListUtils; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Service("UserActionService") @@ -63,7 +68,9 @@ private IBaseExportService iBaseExportService; @Resource - private ICasicFileService iCasicFileService; + private IUserRoleRelationService iUserRoleRelationService; + + final String filePath = "/tmp/casicSecurityCockpitMiniFile/"; @Override public Object getLoginToken(String code) { @@ -94,6 +101,7 @@ //String phone = WXUserUtils.getPhone(dto.getPhoneCode(),getToken()); String phone = dto.getPhoneCode(); userDto.setAttr1(phone); + userDto.setSyncId(jsonObject.get("openid").toString()); UserDto user = userActionDao.getUserInfo(userDto); if(null != user){ if(StringUtil.isEmpty(user.getSyncId())){ @@ -104,7 +112,7 @@ List list = userActionDao.getList(user.getSalt()); return ResponseData.success(list.get(0).getNum()); }else{ - return ResponseData.error(2402,Status.USER_ALREADY_NOT_REGISTERED); + return ResponseData.error(2402,Status.NOT_SUPPORT); } }catch (Exception e){ e.printStackTrace(); @@ -114,8 +122,12 @@ @Override @Transactional - public Object userRegister(UserDto userDto) { + public Object userRegister(UserDto userDto,HttpServletRequest request) { try { + JSONObject jsonObject = getLoginStatus(request); + if(null == jsonObject){ + return ResponseData.error(2401,Status.UNAUTHORIZED); + } if(userDto.getDocumentType().equals(DocumentTypeEnum.PASS)){ if(!userDto.getAccount().matches(REG_LOWERCASE)){ return ResponseData.error(Status.DOCUMENT_TYPE_PASS); @@ -137,6 +149,7 @@ } userDto.setLogonState("0"); userDto.setSalt(RoleEnum.REGULAR_EMPLOYEE.getCode()); + userDto.setSyncId(jsonObject.get("openid").toString()); userActionDao.userRegister(userDto); RuRelation ruRelation = new RuRelation(Long.parseLong(userInfo.getId()),Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode())); QueryWrapper wrapper = new QueryWrapper<>(); @@ -163,7 +176,17 @@ if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); } - userActionDao.updateUserImg(dto.getFileId(), dto.getUid()); + String filePrefix = ""; + if (StrUtil.isNotEmpty(dto.getBase64Image()) && dto.getBase64Image().startsWith("data:image")) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String[] imageValues = Base64ImgUtils.getImageType(dto.getBase64Image()); + filePrefix = uuid + imageValues[0]; + String pathName = filePath + filePrefix; + Base64ImgUtils.GenerateImage(imageValues[1], pathName); + } else { + return ResponseData.error(Status.FAIL); + } + userActionDao.updateUserImg(filePrefix, dto.getUid()); return ResponseData.success(); }catch (Exception e){ e.printStackTrace(); @@ -199,6 +222,12 @@ user.setDocumentTypeName(dictService.getDictNameByCode("documentType",user.getDocumentType())); Dict dict = userActionDao.getList(user.getSalt()).get(0); user.setSalt(dict.getName()); + if(StringUtil.isNotEmpty(user.getAvatar())){ + String path= filePath+user.getAvatar(); + File file=new File(path); + byte[] bytesByFile = getBytesByFile(file); + user.setAvatar(Base64.encode(bytesByFile)); + } return ResponseData.success(user); }catch (Exception e){ e.printStackTrace(); @@ -206,6 +235,29 @@ } } + public static byte[] getBytesByFile(File file) throws IOException { + FileInputStream fis = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + try { + fis = new FileInputStream(file); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + byte[] data = bos.toByteArray(); + return data; + } catch (Exception e) { + log.error("将文件转换成Byte数组失败", e); + } finally { + if (fis != null){ + fis.close(); + } + bos.close(); + } + return null; + } + public JSONObject getLoginStatus(HttpServletRequest request) { try { String token = request.getHeader("token"); @@ -262,17 +314,44 @@ } @Override + @Transactional(rollbackFor=Exception.class) public Object batchImportStaff(List list) { - List> lists = ListUtils.partition(list, 500); - list.forEach(bean -> { + List> staffInfoLists = ListUtils.partition(list, 500); + for (List staffInfoList : staffInfoLists) { + List accounts = staffInfoList.stream().map(StaffInfoDto::getAccount).distinct().collect(Collectors.toList()); + if(accounts.size() phones = staffInfoList.stream().map(StaffInfoDto::getPhone).distinct().collect(Collectors.toList()); + if(phones.size() ruRelations = new ArrayList<>(); + for (StaffInfoDto bean : list) { Long id = IdWorker.getId(); bean.setId(id); - if(StringUtil.isNotEmpty(bean.getPhone())){ + bean.setLogonState("1"); + if (StringUtil.isNotEmpty(bean.getPhone())) { bean.setLogonState("0"); } - }); - for (List staffInfoDtos : lists) { - userActionDao.batchImportStaff(staffInfoDtos); + switch (bean.getStaffType()){ + case "1":bean.setStaffType(RoleEnum.PROPERTY_PERSONNEL.getCode());break; + case "2":bean.setStaffType(RoleEnum.ROLE_PROPERTY_PERSONNEL.getCode());break; + case "3":bean.setStaffType(RoleEnum.REGULAR_EMPLOYEE.getCode());break; + } + ruRelations.add(new RuRelation(id,Long.parseLong(RoleEnum.ROLE_ORDINARY_USER.getCode()))); + } + List> ruRelationLists = ListUtils.partition(ruRelations, 500); + for (List relations : ruRelationLists) { + iUserRoleRelationService.saveBatch(relations); + } + for (List staffInfoDtoList : staffInfoLists) { + try { + userActionDao.batchImportStaff(staffInfoDtoList); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"导入数据人员编号或手机号已存在,请核对"); + } } return ResponseData.success(list); } @@ -307,12 +386,20 @@ @Override @Transactional public Object addUser(StaffInfoDto staffInfoDto) { - Long id = IdWorker.getId(); - staffInfoDto.setId(id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",staffInfoDto.getAccount()); + UserDto userDto = userActionDao.selectOne(wrapper); + if(null != userDto) return ResponseData.error("该员工工号已存在"); staffInfoDto.setLogonState("1"); if(StringUtil.isNotEmpty(staffInfoDto.getPhone())){ + wrapper.clear(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); staffInfoDto.setLogonState("0"); } + Long id = IdWorker.getId(); + staffInfoDto.setId(id); userActionDao.addUser(staffInfoDto); RuRelation ruRelation = new RuRelation(id,Long.parseLong(staffInfoDto.getStaffRole())); ruRelationMapper.insert(ruRelation); @@ -332,6 +419,19 @@ @Override public Object updateUser(StaffInfoDto staffInfoDto) { + UserDto userDto = userActionDao.selectById(staffInfoDto.getId()); + if(StringUtil.isNotEmpty(userDto.getPhone()) && staffInfoDto.getPhone().equals(userDto.getPhone())){ + staffInfoDto.setSyncId(userDto.getSyncId()); + }else if(StringUtil.isNotEmpty(userDto.getPhone())){ + staffInfoDto.setSyncId(null); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",staffInfoDto.getPhone()); + UserDto user = userActionDao.selectOne(wrapper); + if(null != user) return ResponseData.error("该手机号已被绑定或注册"); + }else{ + staffInfoDto.setSyncId(null); + staffInfoDto.setPhone(null); + } userActionDao.updateUser(staffInfoDto); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("USERID",staffInfoDto.getId()).set("ROLEID", staffInfoDto.getStaffRole()); @@ -344,9 +444,7 @@ @Override public void download(String fileId,HttpServletResponse response) { try { - String filePath = "/tmp/"; File file = new File(filePath + fileId); - log.error("文件地址:"+ filePath +fileId); String resultFileName = fileId; resultFileName = URLEncoder.encode(resultFileName,"UTF-8").replaceAll("\\+", "%20"); response.setCharacterEncoding("UTF-8"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java index d466d79..0a95f8b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/VisitorApplyServiceImpl.java @@ -13,6 +13,7 @@ import com.casic.missiles.modular.system.dao.VisitorApplyMapper; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.enums.*; +import com.casic.missiles.modular.system.exception.BusinessException; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.VisitorApply; import com.casic.missiles.modular.system.service.UserActionService; @@ -21,7 +22,9 @@ import dm.jdbc.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -57,7 +60,9 @@ private AbstractDictService dictService; @Override + @Transactional public Object add(VisitorApplyAddRequest visitorApplyAddRequest, HttpServletRequest request) { + try { JSONObject jsonObject = userActionService.getLoginStatus(request); if(null == jsonObject){ return ResponseData.error(2401,Status.TOKEN_EXPIRES); @@ -82,17 +87,20 @@ //String[] dataArr = {MessageEnum.TEST_MESSAGE.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),visitorApply.getVisitReason(),visitorApply.getVisitPosition()}; //JSONObject result = SendMassage(openid, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(messageId,"0",openid); + insertMessageLog(visitorApply.getId().toString(),"0",openid,""); }else{ - insertMessageLog(messageId,"1",openid); + insertMessageLog(visitorApply.getId().toString(),"1",openid,""); } } // 向提报人推送消息 String[] dataArr = {MessageEnum.APPLY_SUBMITTED.getValue(),visitorApply.getApplyNo(),visitorApply.getVisitorName(),accTime}; - sentMessage(visitorApply,dataArr); + sentMessage(visitorApply,dataArr,VisitorApplyStatusDict.APPLY_SUBMITTED); return ResponseData.success(); } return ResponseData.error("访客申请失败"); + }catch (DuplicateKeyException exception){ + throw new BusinessException(500,"编号重复生成,请重新提交"); + } } @Override @@ -153,13 +161,13 @@ if(VisitorApplyStatusDict.APPLY_PASSED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_PASSED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_PASSED); } //申请不通过 if(VisitorApplyStatusDict.APPLY_FAILED.equals(visitorApply.getVisitorApplyStatus())){ // 向申请人推送消息 String[] dataArr = {MessageEnum.APPLY_FAILED.getValue(),apply.getApplyNo(),apply.getVisitorName(),accTime}; - sentMessage(apply,dataArr); + sentMessage(apply,dataArr,VisitorApplyStatusDict.APPLY_FAILED); } } } @@ -172,7 +180,7 @@ @Override public Object getMessageInfo(String messageId, HttpServletRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_no" , messageId); + wrapper.eq("id" , messageId); List users = visitorApplyMapper.selectList(wrapper); if(users != null && users.size() != 0){ return ResponseData.success(users.get(0)); @@ -192,14 +200,11 @@ UserDto userDto = new UserDto(); userDto.setSyncId(openid); UserDto userInfo = userActionMapper.getUserInfo(userDto); - /* String flag = ""; - QueryWrapper ruRelationWrapper = new QueryWrapper<>(); - ruRelationWrapper.eq("USERID",userInfo.getId()); - RuRelation ruRelation = ruRelationMapper.selectOne(ruRelationWrapper); - if(String.valueOf(ruRelation.getRoleId()).equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ - flag = "true"; - }*/ - Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount()); + String flag = "regularEmployee"; + if(userInfo.getSalt().equals(RoleEnum.PROPERTY_PERSONNEL.getCode())){ + flag = "propertyPersonnel"; + } + Page> resMap = visitorApplyMapper.getMessageList(page,openid,userInfo.getAccount(),flag); for (HashMap map : resMap.getRecords()){ map.put("apply_time",map.get("in_time").toString()+"-"+map.get("out_time").toString()); map.put("send_time",DateUtils.parseDate(map.get("create_time").toString()).getTime()); @@ -275,15 +280,15 @@ } - private void sentMessage(VisitorApply visitorApply,String[] dataArr) { + private void sentMessage(VisitorApply visitorApply,String[] dataArr,String applyStatus) { String toUser = getToUser(visitorApply.getStaffCode()); if(StringUtil.isNotEmpty(toUser)){ JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); //JSONObject result = SendMassage(toUser, MessageDict.APPLICANT_MESSAGE_TEMPLATE_ID, dataArr, MessageDict.APPLICANT_MESSAGE_TEMPLATE_DATA); if(result.get("errmsg").equals("ok")){ - insertMessageLog(visitorApply.getApplyNo(),"0",toUser); + insertMessageLog(visitorApply.getId().toString(),"0",toUser,applyStatus); }else{ - insertMessageLog(visitorApply.getApplyNo(),"1",toUser); + insertMessageLog(visitorApply.getId().toString(),"1",toUser,applyStatus); } } } @@ -312,8 +317,8 @@ } return userInfo.getSyncId(); } - public void insertMessageLog(String messageId,String status,String toUser){ - MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser); + public void insertMessageLog(String messageId,String status,String toUser,String applyStatus){ + MessageDto message = new MessageDto(UuidUtils.getId(),messageId,status,DateUtils.format(new Date()),toUser,applyStatus); userActionMapper.insertMessageLog(message); } private List supplementList(List visitorApplyList){ diff --git a/casic-web/src/main/resources/mapper/MessageMapper.xml b/casic-web/src/main/resources/mapper/MessageMapper.xml index 4a6f566..a7c4aee 100644 --- a/casic-web/src/main/resources/mapper/MessageMapper.xml +++ b/casic-web/src/main/resources/mapper/MessageMapper.xml @@ -12,7 +12,7 @@ su.name FROM bus_message bm - LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.apply_no + LEFT JOIN bus_visit_apply bva ON bm.message_id = bva.id LEFT JOIN sys_user su ON bm.open_id = su.SYNC_ID where bm.open_id IS NOT NULL and bm.open_id != '' and bva.apply_no is not null @@ -31,7 +31,7 @@ and bm.`status` = #{request.status} - and su.ACCOUNT like concat('%', #{request.account}, '%') + and su.ACCOUNT= #{request.account} and DATE_FORMAT( bm.create_time, '%Y-%m-%d %H:%m' ) >= #{request.createTime} diff --git a/casic-web/src/main/resources/mapper/UserActionMapper.xml b/casic-web/src/main/resources/mapper/UserActionMapper.xml index 122bb1f..8e6823b 100644 --- a/casic-web/src/main/resources/mapper/UserActionMapper.xml +++ b/casic-web/src/main/resources/mapper/UserActionMapper.xml @@ -33,7 +33,7 @@ - UPDATE sys_user SET `PHONE` = #{userDto.phone},`SALT`=#{userDto.salt},logon_state=#{userDto.logonState},DOCUMENT_TYPE=#{userDto.documentType} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} + UPDATE sys_user SET `PHONE` = #{userDto.phone},`SALT`=#{userDto.salt},logon_state=#{userDto.logonState},DOCUMENT_TYPE=#{userDto.documentType},`SYNC_ID` = #{userDto.syncId} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} UPDATE sys_user SET `SYNC_ID` = #{userDto.syncId},logon_state=#{userDto.logonState} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name} and `PHONE` = #{userDto.phone} @@ -43,8 +43,8 @@ VALUES (#{id},#{userId},#{roleId},DATE_FORMAT(#{updateTime},'%Y-%m-%d %H:%i:%S')) - INSERT INTO bus_message ( `ID`, `MESSAGE_ID`, `STATUS`,`CREATE_TIME`,`OPEN_ID`) - VALUES (#{message.id},#{message.messageId},#{message.status},DATE_FORMAT(#{message.createTime},'%Y-%m-%d %H:%i:%S'),#{message.openId}) + INSERT INTO bus_message ( `ID`, `MESSAGE_ID`, `STATUS`,`CREATE_TIME`,`OPEN_ID`,`apply_status`) + VALUES (#{message.id},#{message.messageId},#{message.status},DATE_FORMAT(#{message.createTime},'%Y-%m-%d %H:%i:%S'),#{message.openId},#{message.applyStatus}) UPDATE sys_user SET `AVATAR` = #{fileId} WHERE `ID` = #{uid} @@ -170,7 +170,8 @@ SET `SALT` = #{user.staffType}, `PHONE` = #{user.phone}, `DOCUMENT_TYPE` = #{user.documentType}, - `remark` = #{user.remark} + `remark` = #{user.remark}, + `SYNC_ID` = #{user.syncId} WHERE `ID` = #{user.id} diff --git a/casic-web/src/main/resources/mapper/VisitorApplyMapper.xml b/casic-web/src/main/resources/mapper/VisitorApplyMapper.xml index 6dac83e..9ed3d1a 100644 --- a/casic-web/src/main/resources/mapper/VisitorApplyMapper.xml +++ b/casic-web/src/main/resources/mapper/VisitorApplyMapper.xml @@ -60,13 +60,18 @@ t1.message_id, t2.staff_code, t2.visitor_name, - t2.visitor_apply_status, + + t1.apply_status AS visitor_apply_status, + + + t2.visitor_apply_status, + DATE_FORMAT(t2.in_time,'%Y/%m/%d %H:%i:%s') as in_time, DATE_FORMAT(t2.out_time,'%Y/%m/%d %H:%i:%s') as out_time, DATE_FORMAT(t1.create_time,'%Y/%m/%d %H:%i:%s') as create_time FROM bus_message t1 - LEFT JOIN bus_visit_apply t2 ON t1.message_id = t2.apply_no + LEFT JOIN bus_visit_apply t2 ON t1.message_id = t2.id WHERE 1 = 1 AND t1.open_id = #{openid} and t2.staff_code = #{user}