| | |
| | | package com.dsh.guns.modular.system.controller.system; |
| | | |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.dsh.course.mapper.UserMapper; |
| | | import com.dsh.guns.config.UserExt; |
| | |
| | | import com.dsh.guns.core.util.SinataUtil; |
| | | import com.dsh.guns.modular.system.controller.util.MD5; |
| | | import com.dsh.guns.modular.system.factory.UserFactory; |
| | | import com.dsh.guns.modular.system.model.Role; |
| | | import com.dsh.guns.modular.system.model.User; |
| | | import com.dsh.guns.modular.system.model.*; |
| | | import com.dsh.guns.modular.system.service.IDeptService; |
| | | import com.dsh.guns.modular.system.service.IRoleService; |
| | | import com.dsh.guns.modular.system.service.IStoreService; |
| | | import com.dsh.guns.modular.system.service.IUserService; |
| | | import com.dsh.guns.modular.system.transfer.UserDto; |
| | | import com.dsh.guns.modular.system.util.OBSUploadUtil; |
| | | import com.dsh.guns.modular.system.util.OssUploadUtil; |
| | | import com.dsh.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.springframework.web.bind.WebDataBinder; |
| | | import org.springframework.beans.propertyeditors.CustomNumberEditor; |
| | | |
| | | import javax.naming.NoPermissionException; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 系统管理员控制器 |
| | |
| | | |
| | | private static String PREFIX = "/system/user/"; |
| | | |
| | | /** 多选框未选择时会提交空字符串;将其转换为空值,避免绑定 List<Integer> 时抛 NumberFormatException。 */ |
| | | @InitBinder |
| | | public void initBinder(WebDataBinder binder) { |
| | | binder.registerCustomEditor(Integer.class, new CustomNumberEditor(Integer.class, true)); |
| | | } |
| | | |
| | | @Autowired |
| | | private GunsProperties gunsProperties; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private IRoleService roleService; |
| | | |
| | | @Autowired |
| | | private IDeptService deptService; |
| | | |
| | | |
| | | /** |
| | |
| | | @RequestMapping("") |
| | | public String index(Model model) { |
| | | model.addAttribute("language",UserExt.getLanguage()); |
| | | model.addAttribute("isSuperAdmin", "admin".equalsIgnoreCase(UserExt.getUser().getAccount())); |
| | | return PREFIX + "user.html"; |
| | | } |
| | | |
| | |
| | | */ |
| | | @RequestMapping("/user_add") |
| | | public String addView(Model model) { |
| | | model.addAttribute("role",UserExt.getUser().getObjectType()); |
| | | model.addAttribute("language",UserExt.getLanguage()); |
| | | LambdaQueryWrapper<Role> roleLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | if(UserExt.getUser().getObjectType()!=1){ |
| | | roleLambdaQueryWrapper.eq(Role::getObjId,UserExt.getUser().getObjectId()); |
| | | } |
| | | roleLambdaQueryWrapper.eq(Role::getObjType,UserExt.getUser().getObjectType()); |
| | | List<Role> list = roleService.list(roleLambdaQueryWrapper); |
| | | model.addAttribute("list",list); |
| | | // 部门列表 |
| | | List<Dept> depts = deptService.list(new QueryWrapper<>()); |
| | | model.addAttribute("depts",depts); |
| | | model.addAttribute("stores", availableStores()); |
| | | return PREFIX + "user_add.html"; |
| | | } |
| | | |
| | | private List<TStore> availableStores() { |
| | | LambdaQueryWrapper<TStore> query = new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1); |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | Integer objectId = UserExt.getUser().getObjectId(); |
| | | if (Integer.valueOf(2).equals(objectType)) { |
| | | query.eq(TStore::getOperatorId, objectId); |
| | | } else if (Integer.valueOf(3).equals(objectType)) { |
| | | query.eq(TStore::getId, objectId); |
| | | } |
| | | return storeService.list(query); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 跳转到编辑管理员页面 |
| | | * 跳转到编辑管理员页面 type=1编辑 type=2 查看详情 |
| | | */ |
| | | @Permission |
| | | @RequestMapping("/user_edit/{userId}") |
| | | public String userEdit(@PathVariable Integer userId, Model model) { |
| | | @RequestMapping("/user_edit/{userId}/{type}") |
| | | public String userEdit(@PathVariable Integer userId,@PathVariable Integer type, Model model) { |
| | | model.addAttribute("role",UserExt.getUser().getObjectType()); |
| | | if (Objects.isNull(userId)) { |
| | | throw new GunsException(BizExceptionEnum.REQUEST_NULL); |
| | | } |
| | | assertAuth(userId); |
| | | User user = this.userService.getById(userId); |
| | | Role role = roleService.getById(user.getRoleid()); |
| | | Dept dept = deptService.getById(user.getDeptid()); |
| | | user.setPhone(maskPhone(user.getPhone())); |
| | | user.setIdCard(maskIdCard(user.getIdCard())); |
| | | model.addAttribute(user); |
| | | model.addAttribute("roleName", ConstantFactory.me().getRoleName(user.getRoleid())); |
| | | model.addAttribute("deptName", ConstantFactory.me().getDeptName(user.getDeptid())); |
| | | if(role==null){ |
| | | model.addAttribute("roleName", ""); |
| | | }else { |
| | | model.addAttribute("roleName", role.getName()); |
| | | } |
| | | if(dept==null){ |
| | | |
| | | model.addAttribute("deptName",""); |
| | | }else { |
| | | |
| | | model.addAttribute("deptName", dept.getFullname()); |
| | | } |
| | | LogObjectHolder.me().set(user); |
| | | LambdaQueryWrapper<Role> roleLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | if(UserExt.getUser().getObjectType()!=1){ |
| | | roleLambdaQueryWrapper.eq(Role::getObjId,UserExt.getUser().getObjectId()); |
| | | } |
| | | roleLambdaQueryWrapper.eq(Role::getObjType,UserExt.getUser().getObjectType()); |
| | | List<Role> list = roleService.list(roleLambdaQueryWrapper); |
| | | // 员工可能是由平台账号创建、后续归属到门店的,原角色不一定属于当前登录人的角色范围。 |
| | | // 编辑时仍需保留该角色作为可选项,避免下拉框无法回显。 |
| | | if (role != null && list.stream().noneMatch(item -> Objects.equals(item.getId(), role.getId()))) { |
| | | list.add(role); |
| | | } |
| | | model.addAttribute("list",list); |
| | | model.addAttribute("language",UserExt.getLanguage()); |
| | | // 部门列表 |
| | | List<Dept> depts = deptService.list(new QueryWrapper<>()); |
| | | model.addAttribute("depts",depts); |
| | | model.addAttribute("stores", availableStores()); |
| | | // 回显同时兼容新关联表、sys_user 旧归属字段和 t_store.storeStaffId 旧数据。 |
| | | List<Integer> selectedStoreIds = userMapper.getStoreIdsByUserId(userId); |
| | | model.addAttribute("selectedStoreIds", selectedStoreIds.stream() |
| | | .map(String::valueOf).collect(Collectors.joining(","))); |
| | | model.addAttribute("type",type); |
| | | return PREFIX + "user_edit.html"; |
| | | } |
| | | |
| | | /** 编辑页异步读取已关联门店,避免模板渲染集合造成多选回显丢失。 */ |
| | | @GetMapping("/storeIds/{userId}") |
| | | @ResponseBody |
| | | public List<Integer> getStoreIds(@PathVariable Integer userId) { |
| | | assertAuth(userId); |
| | | return userMapper.getStoreIdsByUserId(userId); |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new GunsException(BizExceptionEnum.REQUEST_NULL); |
| | | } |
| | | User user = this.userService.getById(userId); |
| | | Role role = roleService.getById(user.getRoleid()); |
| | | Dept dept = deptService.getById(user.getDeptid()); |
| | | user.setPhone(maskPhone(user.getPhone())); |
| | | user.setIdCard(maskIdCard(user.getIdCard())); |
| | | model.addAttribute(user); |
| | | model.addAttribute("roleName", ConstantFactory.me().getRoleName(user.getRoleid())); |
| | | model.addAttribute("deptName", user.getDeptid()==0?"顶级":ConstantFactory.me().getDeptName(user.getDeptid())); |
| | | model.addAttribute("roleName", role.getName()); |
| | | if(dept==null){ |
| | | model.addAttribute("deptName", "无"); |
| | | }else{ |
| | | model.addAttribute("deptName", user.getDeptid()==0?"顶级":dept.getFullname()); |
| | | |
| | | } |
| | | LogObjectHolder.me().set(user); |
| | | return PREFIX + "user_view.html"; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | @Autowired |
| | | private IStoreService storeService; |
| | | @Autowired |
| | | private UserMapper userMapper; |
| | | /** |
| | | * 查询管理员列表 |
| | | */ |
| | | @RequestMapping("/list") |
| | | @Permission |
| | | @ResponseBody |
| | | public Object list(@RequestParam(required = false) String name, @RequestParam(required = false) String createTime, @RequestParam(required = false) Integer deptid) { |
| | | //创建日期 |
| | | String beginTime = null; |
| | | String endTime = null; |
| | | if (SinataUtil.isNotEmpty(createTime)){ |
| | | String[] timeArray = createTime.split(" - "); |
| | | beginTime = timeArray[0]; |
| | | endTime = timeArray[1]; |
| | | public List<UserListVO> list(String name, String phone, String idCard, Integer isSales, Integer state) { |
| | | UserQuery userQuery = new UserQuery(); |
| | | userQuery.setName(name); |
| | | userQuery.setPhone(phone); |
| | | userQuery.setIdCard(idCard); |
| | | userQuery.setIsSales(isSales); |
| | | userQuery.setStatus(state); |
| | | |
| | | // 根据当前登陆人类型来查询员工列表 |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | Integer objectId = UserExt.getUser().getObjectId(); |
| | | switch (objectType){ |
| | | case 1: |
| | | // 平台查询所有 |
| | | List<UserListVO> res= userService.searchUsers(userQuery); |
| | | return res; |
| | | case 2: |
| | | // 运营商查询运营商账号的员工和属于该运营商门店的员工 |
| | | // userQuery.setObjectType(2); |
| | | // userQuery.setObjectId(objectId); |
| | | // // 获取属于这个运营商的门店的店长ids |
| | | // List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId) |
| | | // .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList()); |
| | | // userQuery.setStoreIds(storeStaffIds); |
| | | // List<UserListVO> res1= userService.searchUsers(userQuery); |
| | | List<UserListVO> res1= userService.searchUsers(userQuery); |
| | | List<UserListVO> filteredList = res1.stream() |
| | | .filter(vo -> Objects.equals(vo.getVersion(), UserExt.getUser().getId())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // return res1; |
| | | return filteredList; |
| | | case 3: |
| | | // 门店只查询门店员工 |
| | | TStore store = storeService.getById(objectId); |
| | | List<Integer> storeIds = userQuery.getStoreIds(); |
| | | storeIds.add(store.getStoreStaffId()); |
| | | List<UserListVO> res2= userService.searchUsers(userQuery); |
| | | return res2; |
| | | } |
| | | User user = UserExt.getUser(); |
| | | Role role = roleService.getBaseMapper().selectById(user.getRoleid()); |
| | | if ("administrator".equals(role.getTips())) { |
| | | Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid)); |
| | | return super.packForBT(page); |
| | | } else { |
| | | Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid)); |
| | | return super.packForBT(page); |
| | | } |
| | | return new ArrayList<>(); |
| | | // //创建日期 |
| | | // String beginTime = null; |
| | | // String endTime = null; |
| | | // if (SinataUtil.isNotEmpty(createTime)){ |
| | | // String[] timeArray = createTime.split(" - "); |
| | | // beginTime = timeArray[0]; |
| | | // endTime = timeArray[1]; |
| | | // } |
| | | // User user = UserExt.getUser(); |
| | | // Role role = roleService.getBaseMapper().selectById(user.getRoleid()); |
| | | // if ("administrator".equals(role.getTips())) { |
| | | // Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | // page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid)); |
| | | // return super.packForBT(page); |
| | | // } else { |
| | | // Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | // page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid)); |
| | | // return super.packForBT(page); |
| | | // } |
| | | } |
| | | |
| | | /** |
| | |
| | | @BussinessLog(value = "添加管理员", key = "account", dict = UserDict.class) |
| | | @Permission(Const.ADMIN_NAME) |
| | | @ResponseBody |
| | | public Tip add(@Valid UserDto user, BindingResult result) { |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Object add(@Valid UserDto user, BindingResult result) { |
| | | if (result.hasErrors()) { |
| | | throw new GunsException(BizExceptionEnum.REQUEST_NULL); |
| | | } |
| | | |
| | | // 判断账号是否重复 |
| | | //Check if the account is duplicated |
| | | User theUser = userService.getByAccount(user.getAccount()); |
| | | if (theUser != null) { |
| | | throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); |
| | | // 手机号既是登录账号,必须在 sys_user 中唯一;使用内容判断,不能使用 != 比较字符串引用。 |
| | | if (StringUtils.isEmpty(user.getPhone())) { |
| | | return 5002; |
| | | } |
| | | // 已逻辑删除的员工(status=3)不占用手机号,可用同一手机号重新创建员工。 |
| | | User theUser = userService.getOne(new QueryWrapper<User>() |
| | | .eq("phone", user.getPhone()) |
| | | .ne("status", ManagerStatus.DELETED.getCode())); |
| | | if (theUser != null || userService.getByAccount(user.getPhone()) != null){ |
| | | return 5001; |
| | | } |
| | | |
| | | // 完善账号信息 |
| | | // Complete account information |
| | | user.setPassword(SecureUtil.md5(user.getPassword())); |
| | | user.setStatus(ManagerStatus.OK.getCode()); |
| | | user.setCreatetime(new Date()); |
| | | |
| | | User objectUser = UserFactory.createUser(user); |
| | | //查找平台所属公司 |
| | | //Search for the company that owns the platform. |
| | | this.userService.save(objectUser); |
| | | |
| | | if (StringUtils.isEmpty(user.getRoleid())){ |
| | | objectUser.setObjectType(2); |
| | | }else { |
| | | objectUser.setObjectType(Integer.valueOf(user.getRoleid())); |
| | | |
| | | } |
| | | objectUser.setObjectId(UserExt.getUser().getObjectId()); |
| | | objectUser.setRoleid(user.getRoleid()); |
| | | objectUser.setAccount(user.getPhone()); |
| | | objectUser.setName(user.getName()); |
| | | objectUser.setPhone(user.getPhone()); |
| | | objectUser.setBirthday(user.getBirthday()); |
| | | objectUser.setDeptid(user.getDeptid()); |
| | | objectUser.setIdCard(user.getIdCard()); |
| | | objectUser.setSex(user.getSex()); |
| | | objectUser.setStatus(1); |
| | | objectUser.setPassword(SecureUtil.md5("a123456")); |
| | | objectUser.setCreatetime(new Date()); |
| | | List<TStore> assignedStores = new ArrayList<TStore>(); |
| | | if (user.getStoreIds() != null && !user.getStoreIds().isEmpty()) { |
| | | List<Integer> storeIds = user.getStoreIds().stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); |
| | | if (storeIds.isEmpty()) return ResultUtil.error("请选择有效门店"); |
| | | Integer currentType = UserExt.getUser().getObjectType(); |
| | | Integer currentObjectId = UserExt.getUser().getObjectId(); |
| | | for (Integer storeId : storeIds) { |
| | | TStore store = storeService.getById(storeId); |
| | | if (store == null || !Integer.valueOf(1).equals(store.getState())) return ResultUtil.error("所选门店不存在或已停用"); |
| | | if ((Integer.valueOf(2).equals(currentType) && !currentObjectId.equals(store.getOperatorId())) |
| | | || (Integer.valueOf(3).equals(currentType) && !currentObjectId.equals(store.getId()))) { |
| | | return ResultUtil.error("所选门店不在当前账号的管理范围内"); |
| | | } |
| | | assignedStores.add(store); |
| | | } |
| | | // 首个门店同步写入旧字段,保证既有权限、数据查询和登录逻辑无需改造。 |
| | | TStore primaryStore = assignedStores.get(0); |
| | | objectUser.setObjectType(3); |
| | | objectUser.setRoleid("3"); |
| | | objectUser.setObjectId(primaryStore.getId()); |
| | | // 运营商添加员工 |
| | | } else if (UserExt.getUser().getObjectType() == 2){ |
| | | objectUser.setObjectType(UserExt.getUser().getObjectType()); |
| | | objectUser.setRoleid("2"); |
| | | objectUser.setObjectId(UserExt.getUser().getObjectId()); |
| | | } |
| | | // 门店添加员工 |
| | | if (UserExt.getUser().getObjectType() == 3){ |
| | | objectUser.setObjectType(UserExt.getUser().getObjectType()); |
| | | objectUser.setRoleid("3"); |
| | | objectUser.setObjectId(UserExt.getUser().getObjectId()); |
| | | } |
| | | objectUser.setVersion(UserExt.getUser().getId()); |
| | | this.userService.save(objectUser); |
| | | if (!assignedStores.isEmpty()) { |
| | | replaceStoreRelations(objectUser.getId(), assignedStores); |
| | | } |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | |
| | | @RequestMapping("/edit") |
| | | @BussinessLog(value = "修改管理员", key = "account", dict = UserDict.class) |
| | | @ResponseBody |
| | | public Tip edit(@Valid UserDto user, BindingResult result) throws NoPermissionException { |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Object edit(@Valid UserDto user, BindingResult result) throws NoPermissionException { |
| | | if (result.hasErrors()) { |
| | | throw new GunsException(BizExceptionEnum.REQUEST_NULL); |
| | | } |
| | | |
| | | |
| | | User oldUser = userService.getById(user.getId()); |
| | | // UserExt.hasRole(Const.ADMIN_NAME) |
| | | if (false) { |
| | | this.userService.updateById(UserFactory.editUser(user, oldUser)); |
| | | return SUCCESS_TIP; |
| | | } else { |
| | | assertAuth(user.getId()); |
| | | User shiroUser = UserExt.getUser(); |
| | | if (shiroUser.getId().equals(user.getId()) || shiroUser.getId()==1) { |
| | | this.userService.updateById(UserFactory.editUser(user, oldUser)); |
| | | return SUCCESS_TIP; |
| | | } else { |
| | | throw new GunsException(BizExceptionEnum.NO_PERMITION); |
| | | // 判断是否更改电话 |
| | | if (user.getPhone() != null && user.getPhone().contains("*")) { |
| | | // The edit view displays a masked phone. Treat an unchanged masked |
| | | // value as "keep original", never as a value to persist. |
| | | } else if (!Objects.equals(oldUser.getPhone(), user.getPhone())) { |
| | | User phone = userService.getOne(new QueryWrapper<User>().eq("phone", user.getPhone())); |
| | | if (phone == null){ |
| | | oldUser.setPhone(user.getPhone()); |
| | | }else{ |
| | | return 5001; |
| | | } |
| | | } |
| | | oldUser.setName(user.getName()); |
| | | oldUser.setBirthday(user.getBirthday()); |
| | | oldUser.setDeptid(user.getDeptid()); |
| | | if (user.getIdCard() == null || !user.getIdCard().contains("*")) oldUser.setIdCard(user.getIdCard()); |
| | | oldUser.setSex(user.getSex()); |
| | | oldUser.setEmail(user.getEmail()); |
| | | if (user.getAvatar()!=null && (!user.getAvatar().equals(""))) |
| | | oldUser.setAvatar(user.getAvatar()); |
| | | if (user.getStoreIds() != null) { |
| | | List<TStore> assignedStores = validateStores(user.getStoreIds()); |
| | | if (assignedStores == null) return ResultUtil.error("所选门店不存在、已停用或不在当前账号管理范围内"); |
| | | replaceStoreRelations(oldUser.getId(), assignedStores); |
| | | if (!assignedStores.isEmpty()) { |
| | | oldUser.setObjectType(3); |
| | | oldUser.setObjectId(assignedStores.get(0).getId()); |
| | | oldUser.setRoleid("3"); |
| | | } else if (Integer.valueOf(3).equals(oldUser.getObjectType())) { |
| | | // 清除旧字段关联,避免已移除的首个门店仍被当作该员工所属门店。 |
| | | oldUser.setObjectId(null); |
| | | } |
| | | } |
| | | // 门店关联会维护员工归属信息,但不能覆盖编辑页明确选择的角色。 |
| | | // 必须在关联处理后写入,否则有门店的员工会被上面的兼容逻辑强制改回角色 3。 |
| | | if (!StringUtils.isEmpty(user.getRoleid())) { |
| | | oldUser.setRoleid(user.getRoleid()); |
| | | } |
| | | this.userService.updateById(oldUser); |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | | private String maskPhone(String value) { |
| | | if (value == null) return null; |
| | | return value.length() <= 7 ? stars(value.length()) : value.substring(0, 3) + "****" + value.substring(7); |
| | | } |
| | | |
| | | private String maskIdCard(String value) { |
| | | if (value == null) return null; |
| | | return value.length() <= 10 ? stars(value.length()) : value.substring(0, 6) + stars(value.length() - 10) + value.substring(value.length() - 4); |
| | | } |
| | | |
| | | private String stars(int size) { |
| | | StringBuilder result = new StringBuilder(); |
| | | for (int i = 0; i < size; i++) result.append('*'); |
| | | return result.toString(); |
| | | } |
| | | |
| | | private List<TStore> validateStores(List<Integer> storeIds) { |
| | | List<TStore> stores = new ArrayList<TStore>(); |
| | | Integer currentType = UserExt.getUser().getObjectType(); |
| | | Integer currentObjectId = UserExt.getUser().getObjectId(); |
| | | for (Integer storeId : storeIds.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList())) { |
| | | TStore store = storeService.getById(storeId); |
| | | if (store == null || !Integer.valueOf(1).equals(store.getState())) return null; |
| | | if ((Integer.valueOf(2).equals(currentType) && !currentObjectId.equals(store.getOperatorId())) |
| | | || (Integer.valueOf(3).equals(currentType) && !currentObjectId.equals(store.getId()))) return null; |
| | | stores.add(store); |
| | | } |
| | | return stores; |
| | | } |
| | | |
| | | /** 每条关联记录单独生成雪花主键,避免 MyBatis foreach 复用同一个绑定变量。 */ |
| | | private void replaceStoreRelations(Integer userId, List<TStore> stores) { |
| | | userMapper.deleteStoreRelations(userId); |
| | | for (TStore store : stores) { |
| | | userMapper.insertStoreRelation(IdWorker.getId(), userId, store.getId()); |
| | | } |
| | | } |
| | | |
| | |
| | | return pictureName; |
| | | } |
| | | |
| | | /** |
| | | * 上传图片 |
| | | */ |
| | | /** |
| | | * 上传图片Amis |
| | | */ |
| | | @RequestMapping(method = RequestMethod.POST, path = "/uploadImgAmis") |
| | | @ResponseBody |
| | | public ResultUtil uploadImgAmis(@RequestPart("file") MultipartFile picture, HttpServletResponse response) { |
| | | String value = ""; |
| | | try { |
| | | value = OssUploadUtil.ossUpload("img/", picture); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | System.out.println("图片返回地址-------"+value); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("value",value); |
| | | // return ResultUtil.success(0,map); |
| | | return ResultUtil.getResult(0,null,null,map); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @RequestMapping(method = RequestMethod.POST, path = "/uploadFile") |