diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOrgZoneController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOrgZoneController.java index 9d77c926..b9173d41 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOrgZoneController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOrgZoneController.java @@ -1,10 +1,16 @@ package com.cdzy.ebikeoperate.controller; +import cn.dev33.satoken.stp.StpUtil; import com.cdzy.common.model.JsonResult; +import com.cdzy.common.model.StaffDto; import com.cdzy.ebikeoperate.model.dto.response.EbikeOrgZoneDto; import com.cdzy.ebikeoperate.model.pojo.EbikeOrgZone; import com.cdzy.ebikeoperate.service.EbikeOrgZoneService; +import com.ebike.feign.clients.StaffFeignClient; +import com.ebike.feign.model.rsp.StaffFeign; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -22,6 +28,8 @@ public class EbikeOrgZoneController { @Autowired private EbikeOrgZoneService ebikeOrgZoneService; + @Resource + private StaffFeignClient staffFeignClient; /** * 添加行政区划授权信息。 @@ -32,7 +40,7 @@ public class EbikeOrgZoneController { @PostMapping("save") public JsonResult save(@RequestBody EbikeOrgZone ebikeOrgZone) { boolean r = ebikeOrgZoneService.save(ebikeOrgZone); - return r? JsonResult.success() : JsonResult.failed("添加行政区划授权信息失败"); + return r ? JsonResult.success() : JsonResult.failed("添加行政区划授权信息失败"); } /** @@ -44,7 +52,7 @@ public class EbikeOrgZoneController { @PostMapping("remove") public JsonResult remove(@RequestParam(name = "id") String id) { boolean r = ebikeOrgZoneService.removeById(id); - return r? JsonResult.success() : JsonResult.failed("删除行政区划授权信息失败"); + return r ? JsonResult.success() : JsonResult.failed("删除行政区划授权信息失败"); } /** @@ -56,13 +64,13 @@ public class EbikeOrgZoneController { @PostMapping("update") public JsonResult update(@RequestBody EbikeOrgZone ebikeOrgZone) { boolean r = ebikeOrgZoneService.updateById(ebikeOrgZone); - return r? JsonResult.success() : JsonResult.failed("更新行政区划授权信息失败"); + return r ? JsonResult.success() : JsonResult.failed("更新行政区划授权信息失败"); } /** * 查询所有行政区划授权信息。 * - * @param orgId 组织id + * @param orgId 组织id * @param zoneId 区域id * @return 所有数据 */ @@ -71,7 +79,7 @@ public class EbikeOrgZoneController { , @RequestParam(name = "zoneId", required = false) String zoneId) { List list = ebikeOrgZoneService.list(orgId, zoneId); - return list==null? JsonResult.failed("查询行政区划授权信息失败") : JsonResult.success(list); + return list == null ? JsonResult.failed("查询行政区划授权信息失败") : JsonResult.success(list); } /** @@ -83,8 +91,22 @@ public class EbikeOrgZoneController { @GetMapping("getInfo") public JsonResult getInfo(@RequestParam(name = "id") String id) { EbikeOrgZone r = ebikeOrgZoneService.getById(id); - return r==null? JsonResult.failed("查询行政区划授权信息失败") : JsonResult.success(r); + return r == null ? JsonResult.failed("查询行政区划授权信息失败") : JsonResult.success(r); } + /** + * 查询所有行政区划授权信息。 + * + * @return 所有数据 + */ + @GetMapping("listZoneByLogin") + public JsonResult listZoneByLogin() { + + String token = StpUtil.getTokenValue(); + JsonResult jsonResult = staffFeignClient.getInfoByToken(token); + List list = ebikeOrgZoneService.list(String.valueOf(jsonResult.getData().getOrgId()), null); + return list == null ? JsonResult.failed("查询行政区划授权信息失败") : JsonResult.success(list); + } + } \ No newline at end of file diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeTrackingServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeTrackingServiceImpl.java index c84c2e63..61edab9b 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeTrackingServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeTrackingServiceImpl.java @@ -86,14 +86,17 @@ public class EbikeTrackingServiceImpl implements EbikeTrackingService { fluxQuery.add(" |> pivot(rowKey: [\"_time\"], columnKey: [\"_field\"], valueColumn: \"_value\")"); QueryApi queryApi = influxDBClient.getQueryApi(); List points = queryApi.query(fluxQuery.toString(), EbikeTracking.class); - return points.stream().filter(point -> !CoordinateUtil.outOfChina(point.getLongitude(), point.getLatitude())).map(point -> { + return points.stream().map(point -> { EbikeTrackingDto ebikeTrackingDto = new EbikeTrackingDto(); BeanUtils.copyProperties(point, ebikeTrackingDto); Instant _time = point.get_time(); ebikeTrackingDto.setTime(ConvertUtil.instantToDatetime(_time)); - double[] gcj02 = CoordinateUtil.WGS84ToGCJ02(point.getLongitude(), point.getLatitude()); - ebikeTrackingDto.setLngGCJ02(gcj02[0]); - ebikeTrackingDto.setLatGCJ02(gcj02[1]); + // GPS入库的时候已经转为GCJ02坐标系 + ebikeTrackingDto.setLngGCJ02(point.getLongitude()); + ebikeTrackingDto.setLatGCJ02(point.getLatitude()); + //double[] gcj02 = CoordinateUtil.WGS84ToGCJ02(point.getLongitude(), point.getLatitude()); + //ebikeTrackingDto.setLngGCJ02(gcj02[0]); + //ebikeTrackingDto.setLatGCJ02(gcj02[1]); return ebikeTrackingDto; }).toList(); }else{ diff --git a/ebike-orders/pom.xml b/ebike-orders/pom.xml index 558a5384..a1172870 100644 --- a/ebike-orders/pom.xml +++ b/ebike-orders/pom.xml @@ -30,6 +30,12 @@ 0.0.1-SNAPSHOT + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + + com.mybatis-flex mybatis-flex-spring-boot3-starter diff --git a/ebike-user/pom.xml b/ebike-user/pom.xml index 5ea9bfbb..fc6784cf 100644 --- a/ebike-user/pom.xml +++ b/ebike-user/pom.xml @@ -124,6 +124,11 @@ 1.10.8 test + + com.alibaba.fastjson2 + fastjson2 + 2.0.50 + diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/AuthController.java b/ebike-user/src/main/java/com/cdzy/user/controller/AuthController.java index f6f5e5bb..da3138c5 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/AuthController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/AuthController.java @@ -56,6 +56,9 @@ public class AuthController { if (staff == null) { return JsonResult.failed(Message.USERNAME_WRONG); } + if ("0".equals(staff.getState())) { + return JsonResult.failed("该账号已禁用!"); + } String password = staff.getPassword(); String encrypt = AESUtils.encrypt(loginVo.getPassword()); if (password.equals(encrypt)) { @@ -70,7 +73,7 @@ public class AuthController { BeanUtils.copyProperties(staff, staffDto); StpUtil.login(staff.getStaffId()); String tokenValue = StpUtil.getTokenValue(); - LoginDto loginDto = new LoginDto(staffDto,list,tokenValue); + LoginDto loginDto = new LoginDto(staffDto, list, tokenValue); StpUtil.getSession().set(String.valueOf(staff.getStaffId()), staffDto); return JsonResult.success(Message.LOGIN, loginDto); } diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java b/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java index a94a6edd..4c116624 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java @@ -150,39 +150,52 @@ public class RolesController { @PostMapping("pageQueryRoles") public JsonResult pageQueryRoles(@RequestBody @Validated RoleListQueryDto roleListQueryDto) { - String tokenValue = StpUtil.getTokenValue(); - Object loginId = StpUtil.getLoginIdByToken(tokenValue); - QueryWrapper queryStaff = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); - StaffDto staff = staffService.getOneAs(queryStaff, StaffDto.class); + try { + String tokenValue = StpUtil.getTokenValue(); + Object loginId = StpUtil.getLoginIdByToken(tokenValue); + QueryWrapper queryStaff = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); + StaffDto staff = staffService.getOneAs(queryStaff, StaffDto.class); - QueryWrapper queryWrapper = QueryWrapper.create() - .from(ROLES).select(STAFF.STAFF_ID, ROLES.ALL_COLUMNS, ORGANIZATIONS.ORG_NAME) - .leftJoin(STAFF_ROLES).on(ROLES.ROLE_ID.eq(STAFF_ROLES.ROLE_ID)) - .leftJoin(STAFF).on(STAFF.STAFF_ID.eq(STAFF_ROLES.STAFF_ID)) - .leftJoin(ORGANIZATIONS).on(STAFF.ORG_ID.eq(ORGANIZATIONS.ORG_ID)) - .where(ROLES.ORG_ID.eq(staff.getOrgId())).and(ROLES.ROLE_NAME.eq(roleListQueryDto.getRoleName(), - StringUtils.hasText(roleListQueryDto.getRoleName()))); + QueryWrapper queryWrapper = QueryWrapper.create() + .from(ROLES).select(STAFF.STAFF_ID, ROLES.ALL_COLUMNS, ORGANIZATIONS.ORG_NAME) + .leftJoin(STAFF_ROLES).on(ROLES.ROLE_ID.eq(STAFF_ROLES.ROLE_ID)) + .leftJoin(STAFF).on(STAFF.STAFF_ID.eq(STAFF_ROLES.STAFF_ID)) + .leftJoin(ORGANIZATIONS).on(STAFF.ORG_ID.eq(ORGANIZATIONS.ORG_ID)) + .where(ROLES.ORG_ID.eq(staff.getOrgId())).and(ROLES.ROLE_NAME.eq(roleListQueryDto.getRoleName(), + StringUtils.hasText(roleListQueryDto.getRoleName()))); - QueryWrapper countQuery = QueryWrapper.create() - .select(QueryMethods.count(STAFF.STAFF_ID.getName()).as("staff_count")) - .select(ROLES.ROLE_NAME.getName(), ROLES.ROLE_ID.getName(), - ROLES.ROLE_DESCRIPTION.getName(), ROLES.ROLE_CODE.getName(), - ORGANIZATIONS.ORG_NAME.getName(), ORGANIZATIONS.ORG_ID.getName()) - .groupBy(ORGANIZATIONS.ORG_NAME, ROLES.ROLE_NAME) - .from(queryWrapper).as("a"); + QueryWrapper countQuery = QueryWrapper.create() + .select(QueryMethods.count(STAFF.STAFF_ID.getName()).as("staff_count")) + .select(ROLES.ROLE_NAME.getName(), ROLES.ROLE_ID.getName(), + ROLES.ROLE_DESCRIPTION.getName(), ROLES.ROLE_CODE.getName(), + ORGANIZATIONS.ORG_NAME.getName(), ORGANIZATIONS.ORG_ID.getName()) + .groupBy(ORGANIZATIONS.ORG_NAME, ROLES.ROLE_NAME) + .from(queryWrapper).as("a"); - Page page = Page.of(roleListQueryDto.getPageNum(), roleListQueryDto.getPageSize()); - Page resRolesDtoPage = rolesService.pageAs(page, countQuery, ResRolesDto.class); - List records = resRolesDtoPage.getRecords(); - //统计pc权限数量和小程序权限数量 - for (ResRolesDto record : records) { - QueryWrapper caseQuery = QueryWrapper.create().select(QueryMethods.sum(QueryMethods.case_().when(PERMISSIONS.PERM_TYPE.eq(1)).then(1).else_(0).end()).as("web_count"), QueryMethods.sum(QueryMethods.case_().when(PERMISSIONS.PERM_TYPE.eq(2)).then(1).else_(0).end()).as("applet_count")).innerJoin(ROLE_PERMISSIONS).on(PERMISSIONS.PERM_ID.eq(ROLE_PERMISSIONS.PERM_ID)).where(ROLE_PERMISSIONS.ROLE_ID.eq(record.getRoleId())).where(PERMISSIONS.PERM_TYPE.ne("0")); - ResRolesDto oneAs = permissionsService.getOneAs(caseQuery, ResRolesDto.class); - if (oneAs == null) continue; - record.setWebCount(oneAs.getWebCount()); - record.setAppletCount(oneAs.getAppletCount()); + Page page = Page.of(roleListQueryDto.getPageNum(), roleListQueryDto.getPageSize()); + Page resRolesDtoPage = rolesService.pageAs(page, countQuery, ResRolesDto.class); + List records = resRolesDtoPage.getRecords(); + //统计pc权限数量和小程序权限数量 + for (ResRolesDto record : records) { + QueryWrapper caseQuery = QueryWrapper.create() + .select(QueryMethods.sum(QueryMethods.case_() + .when(PERMISSIONS.PERM_TYPE.eq(1)).then(1) + .else_(0).end()).as("web_count"), + QueryMethods.sum(QueryMethods.case_().when(PERMISSIONS.PERM_TYPE + .eq(2)).then(1).else_(0) + .end()).as("applet_count")) + .innerJoin(ROLE_PERMISSIONS).on(PERMISSIONS.PERM_ID.eq(ROLE_PERMISSIONS.PERM_ID)) + .where(ROLE_PERMISSIONS.ROLE_ID.eq(record.getRoleId())) + .and(PERMISSIONS.PERM_TYPE.ne("0")); + ResRolesDto oneAs = permissionsService.getOneAs(caseQuery, ResRolesDto.class); + if (oneAs == null) continue; + record.setWebCount(oneAs.getWebCount()); + record.setAppletCount(oneAs.getAppletCount()); + } + return JsonResult.success(resRolesDtoPage); + } catch (Exception e) { + return JsonResult.failed("出错了!"); } - return JsonResult.success(resRolesDtoPage); } @@ -260,7 +273,7 @@ public class RolesController { } /** - * 角色信息更新 + * 角色信息删除 * * @param roleId * @return @@ -280,4 +293,24 @@ public class RolesController { return JsonResult.failed("删除失败!"); } } + + /** + * 获取当前登陆用户所属组织下的所有角色信息。 + * + * @return 分页对象 + */ + @GetMapping("listByOrgId") + public JsonResult listByOrgId() { + + String tokenValue = StpUtil.getTokenValue(); + Object loginId = StpUtil.getLoginIdByToken(tokenValue); + QueryWrapper queryStaff = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); + StaffDto staff = staffService.getOneAs(queryStaff, StaffDto.class); + + QueryWrapper queryWrapper = QueryWrapper.create() + .select(ROLES.ROLE_ID, ROLES.ROLE_NAME) + .where(ROLES.ORG_ID.eq(staff.getOrgId())); + List list = rolesService.listAs(queryWrapper, ResRolesDto.class); + return JsonResult.success(list); + } } diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/StaffController.java b/ebike-user/src/main/java/com/cdzy/user/controller/StaffController.java index 13e76c98..f502f7ce 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/StaffController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/StaffController.java @@ -1,24 +1,43 @@ package com.cdzy.user.controller; import cn.dev33.satoken.stp.StpUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.enums.Message; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.PageParam; import com.cdzy.common.model.StaffDto; import com.cdzy.user.model.dto.AccountListQueryDto; -import com.cdzy.user.model.dto.RoleListQueryDto; +import com.cdzy.user.model.dto.ReqStaffDto; +import com.cdzy.user.model.dto.ResStaffDto; import com.cdzy.user.model.entity.Staff; +import com.cdzy.user.model.entity.StaffRoles; +import com.cdzy.user.model.entity.StaffZone; import com.cdzy.user.model.vo.StaffIds; +import com.cdzy.user.service.StaffRolesService; import com.cdzy.user.service.StaffService; +import com.cdzy.user.service.StaffZoneService; +import com.cdzy.user.utils.AESUtils; import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.query.QueryMethods; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import static com.cdzy.user.model.entity.table.RolesTableDef.ROLES; +import static com.cdzy.user.model.entity.table.StaffRolesTableDef.STAFF_ROLES; import static com.cdzy.user.model.entity.table.StaffTableDef.STAFF; +import static com.cdzy.user.model.entity.table.StaffZoneTableDef.STAFF_ZONE; /** * 员工控制层。 @@ -32,6 +51,10 @@ public class StaffController { @Resource private StaffService staffService; + @Autowired + private StaffZoneService staffZoneService; + @Autowired + private StaffRolesService staffRolesService; /** * 添加。 @@ -41,8 +64,7 @@ public class StaffController { */ @PostMapping("save") public JsonResult save(@RequestBody Staff staff) { - QueryWrapper queryWrapper = QueryWrapper.create() - .where(STAFF.PHONE.eq(staff.getPhone())); + QueryWrapper queryWrapper = QueryWrapper.create().where(STAFF.PHONE.eq(staff.getPhone())); Staff one = staffService.getOne(queryWrapper); if (one != null) { return JsonResult.success(Message.REPEAT_PHONE); @@ -119,8 +141,7 @@ public class StaffController { @GetMapping("getInfoByToken") public JsonResult getInfo(@RequestParam("token") String token) { Object loginId = StpUtil.getLoginIdByToken(token); - QueryWrapper queryWrapper = QueryWrapper.create() - .where(STAFF.STAFF_ID.eq(loginId)); + QueryWrapper queryWrapper = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); StaffDto staff = staffService.getOneAs(queryWrapper, StaffDto.class); return JsonResult.success(staff); } @@ -133,8 +154,7 @@ public class StaffController { */ @PostMapping("getStaffsByIds") public JsonResult getStaffsByIds(@RequestBody @Validated StaffIds staffIds) { - QueryWrapper queryWrapper = QueryWrapper.create() - .where(STAFF.STAFF_ID.in(staffIds.getStaffIds())); + QueryWrapper queryWrapper = QueryWrapper.create().where(STAFF.STAFF_ID.in(staffIds.getStaffIds())); List staffDtos = staffService.listAs(queryWrapper, StaffDto.class); return JsonResult.success(staffDtos); } @@ -149,9 +169,7 @@ public class StaffController { public JsonResult getStaffsByIds(@Validated PageParam pageParam, @RequestParam("token") String token) { String id = (String) StpUtil.getLoginIdByToken(token); StaffDto staffDto = (StaffDto) StpUtil.getSessionByLoginId(id).get(id); - QueryWrapper queryWrapper = QueryWrapper.create() - .where(STAFF.ORG_ID.eq(staffDto.getOrgId())) - .where(STAFF.STAFF_ID.ne(staffDto.getStaffId())); + QueryWrapper queryWrapper = QueryWrapper.create().where(STAFF.ORG_ID.eq(staffDto.getOrgId())).where(STAFF.STAFF_ID.ne(staffDto.getStaffId())); Page staffDtos = staffService.pageAs(pageParam.getPage(), queryWrapper, StaffDto.class); return JsonResult.success(staffDtos); } @@ -165,6 +183,163 @@ public class StaffController { @PostMapping("pageQueryStaffs") public JsonResult pageQueryStaffs(@RequestBody @Validated AccountListQueryDto accountListQueryDto) { - return JsonResult.success(""); + try { + String tokenValue = StpUtil.getTokenValue(); + Object loginId = StpUtil.getLoginIdByToken(tokenValue); + QueryWrapper queryStaff = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); + StaffDto staff = staffService.getOneAs(queryStaff, StaffDto.class); + + QueryWrapper queryZone = QueryWrapper.create().select(QueryMethods.groupConcat(STAFF_ZONE.ZONE_NAME).as("zone_name"), QueryMethods.groupConcat(STAFF_ZONE.ZONE_ID).as("zone_id"), STAFF_ZONE.STAFF_ID).from(STAFF_ZONE).groupBy(STAFF_ZONE.STAFF_ID); + + QueryWrapper queryWrapper = QueryWrapper.create().select(STAFF.STAFF_ID, STAFF.ORG_ID, STAFF.USERNAME, STAFF.PHONE, STAFF.STATE, QueryMethods.groupConcat(ROLES.ROLE_NAME).as("role_name"), QueryMethods.groupConcat(ROLES.ROLE_ID).as("role_id"), STAFF.CREATED_AT).select(STAFF_ZONE.ZONE_NAME.getName(), STAFF_ZONE.ZONE_ID.getName()).leftJoin(STAFF_ROLES).on(STAFF.STAFF_ID.eq(STAFF_ROLES.STAFF_ID)).leftJoin(ROLES).on(STAFF_ROLES.ROLE_ID.eq(ROLES.ROLE_ID)).leftJoin(queryZone).as("STAFF_ZONE").on(STAFF.STAFF_ID.eq(new QueryColumn("STAFF_ZONE", "staff_id"))).where(STAFF.ORG_ID.eq(staff.getOrgId())).and(STAFF.USERNAME.eq(accountListQueryDto.getAccountName(), StringUtils.hasText(accountListQueryDto.getAccountName()))).and(STAFF.PHONE.eq(accountListQueryDto.getAccount(), StringUtils.hasText(accountListQueryDto.getAccount()))).groupBy(STAFF.STAFF_ID).orderBy(STAFF.CREATED_AT.desc()); + Page page = Page.of(accountListQueryDto.getPageNum(), accountListQueryDto.getPageSize()); + Page resRolesDtoPage = staffService.pageAs(page, queryWrapper, ResStaffDto.class); + return JsonResult.success(resRolesDtoPage); + } catch (Exception e) { + return JsonResult.failed("出错了!"); + } + } + + /** + * 账号信息新增 + * + * @param staffDto + * @return + */ + @Transactional + @PostMapping("staffInfoAdd") + public JsonResult staffInfoAdd(@RequestBody ReqStaffDto staffDto) { + + try { + Staff staff = new Staff(); + BeanUtils.copyProperties(staffDto, staff); + String tokenValue = StpUtil.getTokenValue(); + Object loginId = StpUtil.getLoginIdByToken(tokenValue); + QueryWrapper queryStaff = QueryWrapper.create().where(STAFF.STAFF_ID.eq(loginId)); + StaffDto staffLogin = staffService.getOneAs(queryStaff, StaffDto.class); + staff.setOrgId(staffLogin.getOrgId()); + staff.setPassword("123456"); + staffService.save(staff); + JSONArray roleId = staffDto.getRoleId(); + List roleList = IntStream.range(0, roleId.size()).mapToObj(i -> { + StaffRoles staffRoles = new StaffRoles(); + staffRoles.setRoleId(Long.parseLong(roleId.get(i).toString())); + staffRoles.setStaffId(staff.getStaffId()); + return staffRoles; + }).collect(Collectors.toList()); + if (!roleList.isEmpty()) { + staffRolesService.saveBatch(roleList); + } + JSONArray zoneId = staffDto.getZoneId(); + List zoneList = IntStream.range(0, zoneId.size()).mapToObj(i -> { + StaffZone staffRoles = new StaffZone(); + JSONObject jsonObject = zoneId.getJSONObject(i); + staffRoles.setZoneId(jsonObject.getLong("zoneId")); + staffRoles.setZoneName(jsonObject.getString("zoneName")); + staffRoles.setStaffId(staff.getStaffId()); + return staffRoles; + }).collect(Collectors.toList()); + if (!zoneList.isEmpty()) { + staffZoneService.saveBatch(zoneList); + } + return JsonResult.success("保存成功!"); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.failed("保存失败!"); + } + } + + /** + * 账号信息更新 + * + * @param staffDto + * @return + */ + @Transactional + @PostMapping("staffInfoUpdate") + public JsonResult staffInfoUpdate(@RequestBody ReqStaffDto staffDto) { + + try { + Staff staff = new Staff(); + BeanUtils.copyProperties(staffDto, staff); + staffService.updateById(staff); + QueryWrapper queryWrapper = QueryWrapper.create().eq(STAFF_ROLES.STAFF_ID.getName(), staff.getStaffId()); + staffRolesService.remove(queryWrapper); + queryWrapper.clear(); + queryWrapper.eq(STAFF_ZONE.STAFF_ID.getName(), staff.getStaffId()); + staffZoneService.remove(queryWrapper); + JSONArray roleId = staffDto.getRoleId(); + List roleList = IntStream.range(0, roleId.size()).mapToObj(i -> { + StaffRoles staffRoles = new StaffRoles(); + staffRoles.setRoleId(Long.parseLong(roleId.get(i).toString())); + staffRoles.setStaffId(staff.getStaffId()); + return staffRoles; + }).collect(Collectors.toList()); + if (!roleList.isEmpty()) { + staffRolesService.saveBatch(roleList); + } + JSONArray zoneId = staffDto.getZoneId(); + List zoneList = IntStream.range(0, zoneId.size()).mapToObj(i -> { + StaffZone staffRoles = new StaffZone(); + JSONObject jsonObject = zoneId.getJSONObject(i); + staffRoles.setZoneId(jsonObject.getLong("zoneId")); + staffRoles.setZoneName(jsonObject.getString("zoneName")); + staffRoles.setStaffId(staff.getStaffId()); + return staffRoles; + }).collect(Collectors.toList()); + if (!zoneList.isEmpty()) { + staffZoneService.saveBatch(zoneList); + } + return JsonResult.success("保存成功!"); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.failed("保存失败!"); + } + } + + /** + * 账号信息删除 + * + * @param staffId + * @return + */ + @Transactional + @GetMapping("staffInfoDel/{staffId}") + public JsonResult staffInfoDel(@PathVariable("staffId") Long staffId) { + + try { + QueryWrapper queryWrapper = QueryWrapper.create() + .eq(STAFF_ROLES.STAFF_ID.getName(), staffId); + staffRolesService.remove(queryWrapper); + queryWrapper.clear(); + queryWrapper.eq(STAFF_ZONE.STAFF_ID.getName(), staffId); + staffZoneService.remove(queryWrapper); + staffService.removeById(staffId); + return JsonResult.success("删除成功!"); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.failed("删除失败!"); + } + } + + /** + * 账号信息禁用 + * + * @param staffId + * @return + */ + @Transactional + @GetMapping("staffInfoDisable/{staffId}") + public JsonResult staffInfoDisable(@PathVariable("staffId") Long staffId) { + + try { + Staff staff = staffService.getById(staffId); + staff.setState("0"); + staffService.updateById(staff); + return JsonResult.success("禁用成功!"); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.failed("禁用失败!"); + } } } diff --git a/ebike-user/src/main/java/com/cdzy/user/mapper/StaffZoneMapper.java b/ebike-user/src/main/java/com/cdzy/user/mapper/StaffZoneMapper.java new file mode 100644 index 00000000..70ca23ca --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/mapper/StaffZoneMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.user.mapper; + +import com.cdzy.user.model.entity.StaffZone; +import com.mybatisflex.core.BaseMapper; + +/** + * 映射层。 + * + * @author attiya + * @since 2025-03-14 + */ +public interface StaffZoneMapper extends BaseMapper { + +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/ReqStaffDto.java b/ebike-user/src/main/java/com/cdzy/user/model/dto/ReqStaffDto.java new file mode 100644 index 00000000..9121bf7c --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/dto/ReqStaffDto.java @@ -0,0 +1,30 @@ +package com.cdzy.user.model.dto; + +import com.alibaba.fastjson2.JSONArray; +import lombok.Data; + +import java.io.Serializable; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-03-14 + */ +@Data +public class ReqStaffDto implements Serializable { + + private Long staffId; + + private String username; + + private String phone; + + private Long orgId; + + private String state; + + private JSONArray zoneId; + + private JSONArray roleId; +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/ResStaffDto.java b/ebike-user/src/main/java/com/cdzy/user/model/dto/ResStaffDto.java new file mode 100644 index 00000000..59cf29c9 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/dto/ResStaffDto.java @@ -0,0 +1,44 @@ +package com.cdzy.user.model.dto; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-03-14 + */ +@Data +public class ResStaffDto implements Serializable { + + private Long staffId; + + private String zoneId; + + private String zoneName; + + private String username; + + private String phone; + + private Long orgId; + + private LocalDateTime createdAt; + + private String state; + + private String roleName; + + private String roleId; + +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/Staff.java b/ebike-user/src/main/java/com/cdzy/user/model/entity/Staff.java index aa0c03fa..a4bf69d0 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/entity/Staff.java +++ b/ebike-user/src/main/java/com/cdzy/user/model/entity/Staff.java @@ -13,7 +13,7 @@ import java.io.Serializable; import java.time.LocalDateTime; /** - * 实体类。 + * 实体类。 * * @author attiya * @since 2025-03-14 @@ -39,9 +39,13 @@ public class Staff implements Serializable { private Long orgId; + @Column(onInsertValue = "0") private Boolean isSuperadmin; @Column(onInsertValue = "now()") private LocalDateTime createdAt; + @Column(onInsertValue = "1") + private String state; + } diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/StaffZone.java b/ebike-user/src/main/java/com/cdzy/user/model/entity/StaffZone.java new file mode 100644 index 00000000..26ec0ab5 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/entity/StaffZone.java @@ -0,0 +1,49 @@ +package com.cdzy.user.model.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-04-01 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_staff_zone") +public class StaffZone implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 绑定id + */ + @Id + private Long bindId; + + /** + * 行政区划id + */ + private Long zoneId; + + /** + * 员工id + */ + private Long staffId; + + /** + * 行政区划名称 + */ + private String zoneName; +} diff --git a/ebike-user/src/main/java/com/cdzy/user/service/StaffZoneService.java b/ebike-user/src/main/java/com/cdzy/user/service/StaffZoneService.java new file mode 100644 index 00000000..35759404 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/service/StaffZoneService.java @@ -0,0 +1,15 @@ +package com.cdzy.user.service; + +import com.cdzy.user.model.entity.Staff; +import com.cdzy.user.model.entity.StaffZone; +import com.mybatisflex.core.service.IService; + +/** + * 服务层。 + * + * @author attiya + * @since 2025-03-14 + */ +public interface StaffZoneService extends IService { + +} diff --git a/ebike-user/src/main/java/com/cdzy/user/service/impl/StaffZoneServiceImpl.java b/ebike-user/src/main/java/com/cdzy/user/service/impl/StaffZoneServiceImpl.java new file mode 100644 index 00000000..9775b071 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/service/impl/StaffZoneServiceImpl.java @@ -0,0 +1,19 @@ +package com.cdzy.user.service.impl; + +import com.cdzy.user.mapper.StaffZoneMapper; +import com.cdzy.user.model.entity.StaffZone; +import com.cdzy.user.service.StaffZoneService; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * @author:Ding + * @ClassName:StaffZoneServiceImpl + * @Package:com.cdzy.user.service.impl.StaffZoneServiceImpl + * @Description: + * @CreateDate:2025年05月13日 + * @Version: + **/ +@Service +public class StaffZoneServiceImpl extends ServiceImpl implements StaffZoneService { +}