/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.system.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSON; import com.aliyun.oss.ServiceException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.minio.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.apache.commons.codec.Charsets; import org.springblade.common.config.FileConfig; import org.springblade.common.config.FtpConfig; import org.springblade.common.excel.RowWriteHandler; import org.springblade.common.utils.ImageUtils; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.annotation.PreAuth; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.utils.*; import org.springblade.modules.accreditation.entity.AccreditationRecords; import org.springblade.modules.accreditation.service.AccreditationRecordsService; import org.springblade.modules.dispatcher.entity.Dispatcher; import org.springblade.modules.dispatcher.service.IDispatcherService; import org.springblade.modules.experience.entity.Experience; import org.springblade.modules.experience.service.IExperienceService; import org.springblade.modules.jurisdiction.entity.Jurisdiction; import org.springblade.modules.jurisdiction.service.JurisdictionService; import org.springblade.modules.securitypaper.entity.SecurityPaper; import org.springblade.modules.securitypaper.service.SecurityPaperService; import org.springblade.modules.signinrecords.entity.SignInRecords; import org.springblade.modules.signinrecords.service.SignInRecordsService; import org.springblade.modules.system.entity.*; import org.springblade.modules.system.excel.*; import org.springblade.modules.system.node.TreeNode; import org.springblade.modules.system.service.*; import org.springblade.modules.system.vo.UserInfoDetail; import org.springblade.modules.system.vo.UserVO; import org.springblade.modules.system.wrapper.UserWrapper; import org.springblade.modules.training.entity.TrainingRegistration; import org.springblade.modules.training.service.TrainingRegistrationService; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import sun.misc.BASE64Decoder; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE; /** * 控制器 * * @author Chill */ @NonDS @ApiIgnore @RestController @RequestMapping("/userWx") @AllArgsConstructor public class UserWxController { private final IUserWxService userWxService; /** * 微信注册 * @param user * @return */ @PostMapping("/wxRegister") public R wxRegister(UserWx user){ Boolean result = userWxService.wxRegister(user); return R.status(result); } /** * 自定义用户列表(微信小程序注册用户数据和系统用户数据结构一致,库不同) */ @GetMapping("/page") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "账号名", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "realName", value = "姓名", paramType = "query", dataType = "string") }) @ApiOperationSupport(order = 3) @ApiOperation(value = "列表", notes = "传入account和realName") public R> page(@ApiIgnore User user, Query query, Long deptId) { IPage pages = userWxService.selectUserPage(Condition.getPage(query), user, deptId, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId())); return R.data(pages); } /** * 用户详情 * * @param user * @return */ @GetMapping("/details") public R details(User user) { UserVO userInfo = userWxService.getUserDetailById(user.getId()); if (null != userInfo.getFingerprint() && !userInfo.getFingerprint().equals("")) { //url 转base64 String base64Url = ImageUtils.imageUrlToBase64(userInfo.getFingerprint()); userInfo.setFingerprint(base64Url); } return R.data(userInfo); } /** * 重置密码 */ @PostMapping("/reset-password") @ApiOperationSupport(order = 8) @ApiOperation(value = "初始化密码", notes = "传入userId集合") //@PreAuth(RoleConstant.HAS_ROLE_ADMIN) public R resetPassword(@ApiParam(value = "userId集合", required = true) @RequestParam String userIds) { boolean temp = userWxService.resetPassword(userIds); return R.status(temp); } /** * 修改密码 */ @PostMapping("/update-password") @ApiOperationSupport(order = 9) @ApiOperation(value = "修改密码", notes = "传入密码") public R updatePassword(@ApiParam(value = "旧密码", required = true) @RequestParam String oldPassword, @ApiParam(value = "新密码", required = true) @RequestParam String newPassword, @ApiParam(value = "新密码", required = true) @RequestParam String newPassword1) { boolean temp = userWxService.updatePassword(AuthUtil.getUserId(), oldPassword, newPassword, newPassword1); return R.status(temp); } /** * 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 6) @ApiOperation(value = "删除", notes = "传入id集合") public R remove(@RequestParam String ids) { // CacheUtil.clear(USER_CACHE); List list = Arrays.asList(ids.split(",")); return R.status(userWxService.removeUser(ids)); } /** * 导出用户 */ @GetMapping("export-user") @ApiOperationSupport(order = 13) @ApiOperation(value = "导出用户", notes = "传入user") public void exportUser(@ApiIgnore @RequestParam Map user, BladeUser bladeUser, HttpServletResponse response) { List list = userWxService.exportUser(user); ExcelUtil.export(response, "小程序用户数据" + DateUtil.time(), "用户数据表", list, UserWxExcel.class); } }