exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamSiteAddForm.java
@@ -15,37 +15,37 @@ @Data public class ExamSiteAddForm { //考点名称 @ApiModelProperty(value = "考点名称",required = true) @NotEmpty(message = "请输入考点名称") private String siteName; //地区id @ApiModelProperty(value = "地区id",required = true) @NotNull(message = "请选择地区") private Long districtId; //地址 @ApiModelProperty(value = "地址") private String address; //负责人 @ApiModelProperty(value = "负责人") private String header; //负责人电话 @ApiModelProperty(value = "负责人电话") private String hphone; //联系人 @ApiModelProperty(value = "联系人") private String contact; //联系人电话 @ApiModelProperty(value = "联系人电话") private String cphone; //是否为煤矿:0为非,1是 @ApiModelProperty(value = "是否为煤矿",required = true,notes = "0为非,1是") @NotNull(message = "请选择是否为煤矿") private Byte isCm; //备注 @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "机构id",required = true) @NotNull(message = "请选择机构") private Long institutionId; //考点名称 @ApiModelProperty(value = "考点名称", required = true) @NotEmpty(message = "请输入考点名称") private String siteName; //地区id @ApiModelProperty(value = "地区id", required = true) @NotNull(message = "请选择地区") private Long districtId; //地址 @ApiModelProperty(value = "地址") private String address; //负责人 @ApiModelProperty(value = "负责人") private String header; //负责人电话 @ApiModelProperty(value = "负责人电话") private String hphone; //联系人 @ApiModelProperty(value = "联系人") private String contact; //联系人电话 @ApiModelProperty(value = "联系人电话") private String cphone; //是否为煤矿:0为非,1是 @ApiModelProperty(value = "是否为煤矿", required = true, notes = "0为非,1是") @NotNull(message = "请选择是否为煤矿") private Byte isCm; //备注 @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "机构id", required = false) // @NotNull(message = "请选择机构") private Long institutionId; } exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.noncoalmine.entity.ExamSite; import com.gkhy.exam.noncoalmine.entity.TrainingInstitution; import com.gkhy.exam.noncoalmine.mapper.ExamSiteMapper; import com.gkhy.exam.noncoalmine.mapper.TrainingInstitutionMapper; import com.gkhy.exam.noncoalmine.model.addForm.ExamSiteAddForm; @@ -20,6 +19,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @@ -31,75 +31,78 @@ */ @Service("examSiteService") public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteMapper, ExamSite> implements ExamSiteService { @Autowired private SysDistrictService districtService; @Autowired private ExamSiteMapper examSiteMapper; @Autowired private TrainingInstitutionMapper institutionMapper; @Override public List<ExamSiteVO> listByPage(ExamSiteQuery query) { SysUser user = SecurityUtils.getLoginUser().getUser(); if(StringUtils.isEmpty(query.getDistrictCode())){ //传入区划为空 if(!user.isAdmin(user.getUserId())){ //非超管 List<SysDistrict> districtList = districtService .selectAll() .stream() .filter(sysDistrict -> sysDistrict.getId().equals(user.getDistrictId())) .collect(Collectors.toList()); if(districtList.size() > 0){ SysDistrict sysDistrict = districtList.get(0); query.setDistrictCode(sysDistrict.getCode()); } } } List<ExamSiteVO> trainingInstitutionVOS = examSiteMapper.listByPage(query); trainingInstitutionVOS.forEach(item->{ TrainingInstitution trainingInstitution = institutionMapper.selectById(item.getInstitutionId()); item.setInstitutionName(trainingInstitution != null ? trainingInstitution.getInstitutionName() : ""); }); return trainingInstitutionVOS; } @Autowired private SysDistrictService districtService; @Autowired private ExamSiteMapper examSiteMapper; @Autowired private TrainingInstitutionMapper institutionMapper; /** * 新增 * @param addForm * @return */ @Override public int add(ExamSiteAddForm addForm) { ExamSite examSite = new ExamSite(); BeanUtils.copyProperties(addForm,examSite); examSite.setDelFlag((byte)0); return baseMapper.insert(examSite); } @Override public List<ExamSiteVO> listByPage(ExamSiteQuery query) { SysUser user = SecurityUtils.getLoginUser().getUser(); if (StringUtils.isEmpty(query.getDistrictCode())) { //传入区划为空 if (!user.isAdmin(user.getUserId())) { //非超管 List<SysDistrict> districtList = districtService .selectAll() .stream() .filter(sysDistrict -> sysDistrict.getId().equals(user.getDistrictId())) .collect(Collectors.toList()); if (districtList.size() > 0) { SysDistrict sysDistrict = districtList.get(0); query.setDistrictCode(sysDistrict.getCode()); } } } List<ExamSiteVO> trainingInstitutionVOS = examSiteMapper.listByPage(query); // trainingInstitutionVOS.forEach(item->{ // TrainingInstitution trainingInstitution = institutionMapper.selectById(item.getInstitutionId()); // item.setInstitutionName(trainingInstitution != null ? trainingInstitution.getInstitutionName() : ""); // }); return trainingInstitutionVOS; } /** * 修改 * @param modForm * @return */ @Override public int mod(ExamSiteModForm modForm) { ExamSite examSite = new ExamSite(); BeanUtils.copyProperties(modForm,examSite); return baseMapper.updateById(examSite); } /** * 新增 * * @param addForm * @return */ @Override public int add(ExamSiteAddForm addForm) { ExamSite examSite = new ExamSite(); BeanUtils.copyProperties(addForm, examSite); examSite.setDelFlag((byte) 0); return baseMapper.insert(examSite); } @Override public void delBatch(List<Long> siteIds) { UpdateWrapper<ExamSite> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("site_id",siteIds) .set("del_flag",(byte)2); this.update(updateWrapper); } /** * 修改 * * @param modForm * @return */ @Override public int mod(ExamSiteModForm modForm) { ExamSite examSite = new ExamSite(); BeanUtils.copyProperties(modForm, examSite); return baseMapper.updateById(examSite); } @Override public List<ExamSite> getSiteByInstitutionId(Long institutionId) { List<ExamSite> examSites = baseMapper.selectList(new LambdaQueryWrapper<ExamSite>().eq(ExamSite::getDelFlag, (byte) 0).eq(ExamSite::getInstitutionId, institutionId)); return examSites; } @Override public void delBatch(List<Long> siteIds) { UpdateWrapper<ExamSite> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("site_id", siteIds) .set("del_flag", (byte) 2); this.update(updateWrapper); } @Override public List<ExamSite> getSiteByInstitutionId(Long institutionId) { List<ExamSite> examSites = baseMapper.selectList(new LambdaQueryWrapper<ExamSite>().eq(ExamSite::getDelFlag, (byte) 0).eq(ExamSite::getInstitutionId, institutionId)); return examSites; } } exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalPayController.java
@@ -20,7 +20,6 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -90,7 +89,7 @@ * 新增非煤缴费管理 */ @PostMapping("/add") @PreAuthorize("@ss.hasPermi('noncoal:nonpay:add')") //@PreAuthorize("@ss.hasPermi('noncoal:nonpay:add')") @ApiOperation(value = "新增非煤缴费管理") public AjaxResult add(@Validated @RequestBody NonCoalPayReqDto nonCoalPay) { return toAjax(nonCoalPayService.insertNonCoalPay(nonCoalPay)); @@ -206,4 +205,18 @@ return success(nonCoalPayStudentService.sendOrder(id, payType)); } @PostMapping("/queryOrder") @ApiOperation(value = "查询是否生成缴费订单") @Anonymous @RepeatSubmit @ApiImplicitParams({ @ApiImplicitParam(name = "id", dataTypeClass = Long.class, value = "个人缴费学员数据id,团队缴费数据id", required = true), @ApiImplicitParam(name = "payType", dataTypeClass = String.class, value = "1个人2是团队", required = true), }) public AjaxResult queryOrder(@RequestParam("id") Long id, @RequestParam("payType") String payType) { return success(nonCoalPayStudentService.sendOrder(id, payType)); } } exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/NonCoalPayDetailH5RepDto.java
@@ -34,8 +34,8 @@ @ApiModelProperty("缴费状态0否1是") private Integer payStatus; // @ApiModelProperty("待定财政缴费状态0未缴费1缴费中2完成缴费") // private Long govPayStatus; @ApiModelProperty("待定财政缴费状态0未缴费1缴费中2完成缴费") private Long govPayStatus; @ApiModelProperty("缴费凭证") private String fileData; exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/NonCoalStuRep.java
@@ -1,9 +1,11 @@ package com.gkhy.exam.pay.dto.rep; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "缴费学员相关信息") public class NonCoalStuRep { private Long id; @@ -43,4 +45,10 @@ @ApiModelProperty("财政订单编号") private String orderId; @ApiModelProperty("订单编号") private String orderNo; @ApiModelProperty("财政订单状态0未生成1生成中2已生成") private Long govPayStatus; } exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayStudent.java
@@ -100,6 +100,12 @@ @ApiModelProperty("缴费时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date payTime; /** * 财政订单状态0未生成1生成中2未生成 */ @ApiModelProperty("财政订单状态0未生成1生成中2未生成") private Integer govPayStatus; /** * 删除标志(0代表存在2代表删除) */ @@ -235,4 +241,12 @@ public void setPayTime(Date payTime) { this.payTime = payTime; } public Integer getGovPayStatus() { return govPayStatus; } public void setGovPayStatus(Integer govPayStatus) { this.govPayStatus = govPayStatus; } } exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalPayStudentService.java
@@ -1,6 +1,7 @@ package com.gkhy.exam.pay.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gkhy.exam.pay.dto.rep.NonCoalStuRep; import com.gkhy.exam.pay.dto.req.NonCoalPayStuImport; import com.gkhy.exam.pay.dto.req.NonCoalPayStudentReqDto; import com.gkhy.exam.pay.entity.NonCoalPayStudent; @@ -33,6 +34,9 @@ public String sendOrder(Long dataId, String payType); public NonCoalStuRep queryOrder(Long dataId, String payType); /** * 新增【请填写功能名称】 * exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java
@@ -81,6 +81,29 @@ if (nonCoalStuRep.getPayStatus() == 1) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已缴费请勿重复缴费"); } //财政缴款码已生成了 if (nonCoalStuRep.getGovPayStatus() == 2) { return nonCoalStuRep.getOrderId(); } //财政缴款码未生成 if (nonCoalStuRep.getPayStatus() == 0) { if ("1".equals(payType)) { baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getGovPayStatus, 1) .eq(NonCoalPayStudent::getId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); } else { //团体缴费 baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getGovPayStatus, 1) .eq(NonCoalPayStudent::getNonCoalPayId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); } } else { orderNo = nonCoalStuRep.getOrderNo(); } List<NonCoalCateRep> nonCoalPayCategoryList = nonCoalPayOrder.getNonCoalPayCategoryList(); if (StringUtils.isEmpty(nonCoalPayCategoryList)) { @@ -101,7 +124,7 @@ if ("1".equals(payType)) { baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderId, orderId) .set(NonCoalPayStudent::getOrderNo, orderNo) // .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getPayCode, billNo) .eq(NonCoalPayStudent::getId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); @@ -109,7 +132,7 @@ //团体缴费 baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderId, orderId) .set(NonCoalPayStudent::getOrderNo, orderNo) // .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getPayCode, billNo) .eq(NonCoalPayStudent::getNonCoalPayId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); @@ -133,6 +156,28 @@ return null; } @Override public NonCoalStuRep queryOrder(Long dataId, String payType) { List<NonCoalPayOrder> nonCoalPayOrders = nonCoalPayMapper.selectNonCoalPayOrderByParam(dataId, Long.valueOf(payType)); if (StringUtils.isEmpty(nonCoalPayOrders)) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "未找到相关缴费信息"); } NonCoalPayOrder nonCoalPayOrder = nonCoalPayOrders.get(0); List<NonCoalStuRep> nonCoalStuList = nonCoalPayOrder.getNonCoalStuList(); if (StringUtils.isEmpty(nonCoalStuList)) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "未找到需要缴费的学员"); } NonCoalStuRep nonCoalStuRep = nonCoalStuList.get(0); if (nonCoalStuRep.getPayStatus() == 1) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已缴费请勿重复缴费"); } return nonCoalStuRep; } private PayReqData dealData(NonCoalPayOrder nonCoalPayOrder, String orderNo, String payType) { List<NonCoalStuRep> nonCoalStuList = nonCoalPayOrder.getNonCoalStuList(); List<NonCoalCateRep> nonCoalPayCategoryList = nonCoalPayOrder.getNonCoalPayCategoryList(); exam-system/src/main/resources/mapper/pay/NonCoalPayMapper.xml
@@ -59,7 +59,7 @@ <result property="idCard" column="id_card"/> <result property="studentName" column="student_name"/> <result property="payStatus" column="pay_status"/> <!-- <result property="govPayStatus" column="gov_pay_status"/>--> <result property="govPayStatus" column="gov_pay_status"/> <result property="fileData" column="file_data"/> <result property="nonCoalPayType" column="non_coal_pay_type"/> <result property="orderId" column="order_id"/> @@ -184,7 +184,7 @@ t.id_card, t.name as student_name, t.pay_status, -- t.gov_pay_status, t.gov_pay_status, t.file_data, t.pay_type as non_coal_pay_type, t.order_id, @@ -234,6 +234,8 @@ <result property="studentName" column="student_name"/> <result property="payStatus" column="pay_status"/> <result property="orderId" column="order_id"/> <result property="orderNo" column="order_no"/> <result property="govPayStatus" column="gov_pay_status"/> </resultMap> @@ -260,7 +262,9 @@ t.id_card, t.name as student_name, t.pay_status, t.order_id t.order_id, t.gov_pay_status, t.order_no from non_coal_pay a inner join non_coal_pay_student t on t.non_coal_pay_id = a.id and t.del_flag = 0 and t.pay_status = 0 and t.order_id is null exam-system/src/main/resources/mapper/pay/NonCoalPayStudentMapper.xml
@@ -23,6 +23,7 @@ <result property="orderId" column="order_id"/> <result property="fileData" column="file_data"/> <result property="payTime" column="pay_time"/> <result property="govPayStatus" column="gov_pay_status"/> </resultMap> <sql id="selectNonCoalPayStudentVo"> @@ -43,7 +44,8 @@ order_no, order_id, file_data, pay_time pay_time, gov_pay_status from non_coal_pay_student </sql> @@ -77,6 +79,7 @@ <if test="idCard != null and idCard != ''">id_card,</if> <if test="phone != null and phone != ''">phone,</if> <if test="sex != null">sex,</if> <if test="govPayStatus!=null">gov_pay_status,</if> <if test="payCode != null">pay_code,</if> <if test="payType != null">pay_type,</if> <if test="orderNo != null and orderNo != '' ">order_no,</if> @@ -94,6 +97,7 @@ <if test="idCard != null and idCard != ''">#{idCard},</if> <if test="phone != null and phone != ''">#{phone},</if> <if test="sex != null">#{sex},</if> <if test="govPayStatus!=null">#{govPayStatus},</if> <if test="payCode != null">#{payCode},</if> <if test="payType != null">#{payType},</if> <if test="orderNo != null and orderNo != '' ">#{orderNo},</if> @@ -123,6 +127,7 @@ <if test="sex != null">sex = #{sex},</if> <if test="orderNo != null and orderNo != ''">order_no = #{orderNo},</if> <if test="orderId != null and orderId != ''">order_id = #{orderId},</if> <if test="govPayStatus!=null">gov_pay_status=#{govPayStatus},</if> <if test="fileData != null and fileData != ''">file_data = #{fileData},</if> <if test="payTime != null">pay_time = #{payTime},</if> <if test="payType != null">pay_type = #{payType},</if> ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -1,21 +1,5 @@ package com.ruoyi.web.controller.system; import java.util.List; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -31,16 +15,25 @@ import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.stream.Collectors; /** * 用户信息 * * * @author ruoyi */ @RestController @RequestMapping("/system/user") public class SysUserController extends BaseController { public class SysUserController extends BaseController { @Autowired private ISysUserService userService; @@ -58,8 +51,7 @@ */ @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") public TableDataInfo list(SysUser user) { public TableDataInfo list(SysUser user) { startPage(); List<SysUser> list = userService.selectUserList(user); return getDataTable(list); @@ -68,8 +60,7 @@ @Log(title = "用户管理", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:user:export')") @PostMapping("/export") public void export(HttpServletResponse response, SysUser user) { public void export(HttpServletResponse response, SysUser user) { List<SysUser> list = userService.selectUserList(user); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); util.exportExcel(response, list, "用户数据"); @@ -78,8 +69,7 @@ @Log(title = "用户管理", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('system:user:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); List<SysUser> userList = util.importExcel(file.getInputStream()); String operName = getUsername(); @@ -88,8 +78,7 @@ } @PostMapping("/importTemplate") public void importTemplate(HttpServletResponse response) { public void importTemplate(HttpServletResponse response) { ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); util.importTemplateExcel(response, "用户数据"); } @@ -98,16 +87,14 @@ * 根据用户编号获取详细信息 */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping(value = { "/", "/{userId}" }) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) { @GetMapping(value = {"/", "/{userId}"}) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) { userService.checkUserDataScope(userId); AjaxResult ajax = AjaxResult.success(); List<SysRole> roles = roleService.selectRoleAll(); ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); ajax.put("posts", postService.selectPostAll()); if (StringUtils.isNotNull(userId)) { if (StringUtils.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); ajax.put(AjaxResult.DATA_TAG, sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); @@ -122,18 +109,12 @@ @PreAuthorize("@ss.hasPermi('system:user:add')") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysUser user) { if (!userService.checkUserNameUnique(user)) { public AjaxResult add(@Validated @RequestBody SysUser user) { if (!userService.checkUserNameUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } user.setCreateBy(getUsername()); @@ -147,20 +128,14 @@ @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysUser user) { public AjaxResult edit(@Validated @RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); if (!userService.checkUserNameUnique(user)) { if (!userService.checkUserNameUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } user.setUpdateBy(getUsername()); @@ -173,10 +148,8 @@ @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") public AjaxResult remove(@PathVariable Long[] userIds) { if (ArrayUtils.contains(userIds, getUserId())) { public AjaxResult remove(@PathVariable Long[] userIds) { if (ArrayUtils.contains(userIds, getUserId())) { return error("当前用户不能删除"); } return toAjax(userService.deleteUserByIds(userIds)); @@ -188,8 +161,7 @@ @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") public AjaxResult resetPwd(@RequestBody SysUser user) { public AjaxResult resetPwd(@RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); @@ -203,8 +175,7 @@ @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public AjaxResult changeStatus(@RequestBody SysUser user) { public AjaxResult changeStatus(@RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); user.setUpdateBy(getUsername()); @@ -216,8 +187,7 @@ */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping("/authRole/{userId}") public AjaxResult authRole(@PathVariable("userId") Long userId) { public AjaxResult authRole(@PathVariable("userId") Long userId) { AjaxResult ajax = AjaxResult.success(); SysUser user = userService.selectUserById(userId); List<SysRole> roles = roleService.selectRolesByUserId(userId); @@ -232,8 +202,7 @@ @PreAuthorize("@ss.hasPermi('system:user:edit')") @Log(title = "用户管理", businessType = BusinessType.GRANT) @PutMapping("/authRole") public AjaxResult insertAuthRole(Long userId, Long[] roleIds) { public AjaxResult insertAuthRole(Long userId, Long[] roleIds) { userService.checkUserDataScope(userId); userService.insertUserAuth(userId, roleIds); return success(); @@ -242,10 +211,9 @@ /** * 获取部门树列表 */ @PreAuthorize("@ss.hasPermi('system:user:list')") //@PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/deptTree") public AjaxResult deptTree(SysDept dept) { public AjaxResult deptTree(SysDept dept) { return success(deptService.selectDeptTreeList(dept)); } } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -1,35 +1,41 @@ package com.ruoyi.common.core.domain.entity; import java.util.Date; import java.util.List; import javax.validation.constraints.*; import com.ruoyi.common.core.domain.model.SysDistrictVo; import com.ruoyi.common.core.domain.model.TrainingInstitutionVo; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.Type; import com.ruoyi.common.annotation.Excels; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.model.SysDistrictVo; import com.ruoyi.common.core.domain.model.TrainingInstitutionVo; import com.ruoyi.common.xss.Xss; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.util.Date; import java.util.List; /** * 用户对象 sys_user * * * @author ruoyi */ public class SysUser extends BaseEntity { public class SysUser extends BaseEntity { private static final long serialVersionUID = 1L; /** 用户ID */ /** * 用户ID */ @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号") private Long userId; /** 部门ID */ /** * 部门ID */ @Excel(name = "部门编号", type = Type.IMPORT) private Long deptId; /** * 区域 @@ -38,70 +44,102 @@ private String unit; /** 用户账号 */ /** * 用户账号 */ @Excel(name = "登录名称") private String userName; /** 用户昵称 */ /** * 用户昵称 */ @Excel(name = "用户名称") private String nickName; /** 用户邮箱 */ /** * 用户邮箱 */ @Excel(name = "用户邮箱") private String email; /** 手机号码 */ /** * 手机号码 */ @Excel(name = "手机号码") private String phonenumber; /** 用户性别 */ /** * 用户性别 */ @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") private String sex; /** 用户头像 */ /** * 用户头像 */ private String avatar; /** 密码 */ /** * 密码 */ private String password; /** 帐号状态(0正常 1停用) */ /** * 帐号状态(0正常 1停用) */ @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") private String status; /** 删除标志(0代表存在 2代表删除) */ /** * 删除标志(0代表存在 2代表删除) */ private String delFlag; /** 最后登录IP */ /** * 最后登录IP */ @Excel(name = "最后登录IP", type = Type.EXPORT) private String loginIp; /** 最后登录时间 */ /** * 最后登录时间 */ @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) private Date loginDate; /** 部门对象 */ /** * 部门对象 */ @Excels({ @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) }) private SysDept dept; /** 角色对象 */ /** * 角色对象 */ private List<SysRole> roles; /** 角色组 */ /** * 角色组 */ private Long[] roleIds; /** 岗位组 */ /** * 岗位组 */ private Long[] postIds; /** 角色ID */ /** * 角色ID */ private Long roleId; /** * 身份证 */ private String idCard; private String idCard; /*** * 机构ids */ @@ -111,211 +149,172 @@ private List<TrainingInstitutionVo> institutions; public SysUser() { public SysUser() { } public SysUser(Long userId) { public SysUser(Long userId) { this.userId = userId; } public Long getUserId() { public Long getUserId() { return userId; } public void setUserId(Long userId) { public void setUserId(Long userId) { this.userId = userId; } public boolean isAdmin() { public boolean isAdmin() { return isAdmin(this.userId); } public static boolean isAdmin(Long userId) { public static boolean isAdmin(Long userId) { return userId != null && 1L == userId; } public Long getDeptId() { //@NotNull(message = "部门未选择") public Long getDeptId() { return deptId; } public void setDeptId(Long deptId) { public void setDeptId(Long deptId) { this.deptId = deptId; } @Xss(message = "用户昵称不能包含脚本字符") @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") public String getNickName() { public String getNickName() { return nickName; } public void setNickName(String nickName) { public void setNickName(String nickName) { this.nickName = nickName; } @Xss(message = "用户账号不能包含脚本字符") @NotBlank(message = "用户账号不能为空") @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") public String getUserName() { public String getUserName() { return userName; } public void setUserName(String userName) { public void setUserName(String userName) { this.userName = userName; } @Email(message = "邮箱格式不正确") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") public String getEmail() { public String getEmail() { return email; } public void setEmail(String email) { public void setEmail(String email) { this.email = email; } @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") public String getPhonenumber() { public String getPhonenumber() { return phonenumber; } public void setPhonenumber(String phonenumber) { public void setPhonenumber(String phonenumber) { this.phonenumber = phonenumber; } public String getSex() { public String getSex() { return sex; } public void setSex(String sex) { public void setSex(String sex) { this.sex = sex; } public String getAvatar() { public String getAvatar() { return avatar; } public void setAvatar(String avatar) { public void setAvatar(String avatar) { this.avatar = avatar; } public String getPassword() { public String getPassword() { return password; } public void setPassword(String password) { public void setPassword(String password) { this.password = password; } public String getStatus() { public String getStatus() { return status; } public void setStatus(String status) { public void setStatus(String status) { this.status = status; } public String getDelFlag() { public String getDelFlag() { return delFlag; } public void setDelFlag(String delFlag) { public void setDelFlag(String delFlag) { this.delFlag = delFlag; } public String getLoginIp() { public String getLoginIp() { return loginIp; } public void setLoginIp(String loginIp) { public void setLoginIp(String loginIp) { this.loginIp = loginIp; } public Date getLoginDate() { public Date getLoginDate() { return loginDate; } public void setLoginDate(Date loginDate) { public void setLoginDate(Date loginDate) { this.loginDate = loginDate; } public SysDept getDept() { public SysDept getDept() { return dept; } public void setDept(SysDept dept) { public void setDept(SysDept dept) { this.dept = dept; } public List<SysRole> getRoles() { public List<SysRole> getRoles() { return roles; } public void setRoles(List<SysRole> roles) { public void setRoles(List<SysRole> roles) { this.roles = roles; } public Long[] getRoleIds() { public Long[] getRoleIds() { return roleIds; } public void setRoleIds(Long[] roleIds) { public void setRoleIds(Long[] roleIds) { this.roleIds = roleIds; } public Long[] getPostIds() { public Long[] getPostIds() { return postIds; } public void setPostIds(Long[] postIds) { public void setPostIds(Long[] postIds) { this.postIds = postIds; } public Long getRoleId() { public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { public void setRoleId(Long roleId) { this.roleId = roleId; } @@ -369,28 +368,28 @@ @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("deptId", getDeptId()) .append("unit", getUnit()) .append("districtId", getDistrictId()) .append("userName", getUserName()) .append("nickName", getNickName()) .append("email", getEmail()) .append("phonenumber", getPhonenumber()) .append("sex", getSex()) .append("avatar", getAvatar()) .append("password", getPassword()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("loginIp", getLoginIp()) .append("loginDate", getLoginDate()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("dept", getDept()) .toString(); return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("deptId", getDeptId()) .append("unit", getUnit()) .append("districtId", getDistrictId()) .append("userName", getUserName()) .append("nickName", getNickName()) .append("email", getEmail()) .append("phonenumber", getPhonenumber()) .append("sex", getSex()) .append("avatar", getAvatar()) .append("password", getPassword()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("loginIp", getLoginIp()) .append("loginDate", getLoginDate()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("dept", getDept()) .toString(); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
@@ -40,7 +40,11 @@ **/ public static String getDeptDistrictCode() { try { return getLoginUser().getUser().getDept().getDistrictCode(); if (getLoginUser().getUser().getDept() == null) { return ""; } String districtCode = getLoginUser().getUser().getDept().getDistrictCode(); return StringUtils.isEmpty(districtCode) ? "" : districtCode; } catch (Exception e) { throw new ServiceException("获取部门区域异常", HttpStatus.UNAUTHORIZED); }