Commit a5cc8d5d by HlQ

[add] 引入 mybatis-plus-join-boot-starter 依赖

[chg] 用户绑定角色,角色绑定资源以及项目和合同互相绑定三个接口bug修改
1 parent 35883028
Showing 93 changed files with 478 additions and 302 deletions
......@@ -56,6 +56,11 @@
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>1.4.7.2</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>wx-java-mp-spring-boot-starter</artifactId>
<version>4.5.0</version>
......
package vion;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import vion.third.DingMod;
@SpringBootApplication
@MapperScan("vion.mapper")
......@@ -17,23 +12,4 @@ public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private DingMod dingMod;
private final static Logger logger = LoggerFactory.getLogger(Application.class);
@Scheduled(cron = "${third.run.cron:0 0 2 * * ?}")
public void startJob() {
try {
logger.info("启动");
//定时获取钉钉用户列表
dingMod.getDeptList();
dingMod.getDingUserList();
logger.info("启动完成");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package vion.advice;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.exception.NotPermissionException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
......@@ -71,5 +72,11 @@ public class ResBodyAdvice implements ResponseBodyAdvice<Object> {
log.error("未登录", e.getMessage());
return ResultUtil.error(401, "请重新登录");
}
@ExceptionHandler(NotPermissionException.class)
public ResultVO notPermissionExceptionHandler(NotPermissionException e) {
log.error("无权限", e.getMessage());
return ResultUtil.error(500, "缺少权限:" + e.getPermission());
}
}
......@@ -20,19 +20,19 @@ public class AccountController {
private final IAccountService accountService;
@GetMapping("/accounts")
@SaCheckPermission(value = "account:list", orRole="admin")
@SaCheckPermission(value = "account:list", orRole = "admin")
public Page<Account> getAccountList(BaseDTO dto) {
return accountService.page(Page.of(dto.getPageNum(), dto.getPageSize()));
}
@GetMapping("/account")
@SaCheckPermission(value = "account:query", orRole="admin")
@SaCheckPermission(value = "account:query", orRole = "admin")
public Account getProductByID(Integer id) {
return accountService.getById(id);
}
@PostMapping("/accounts")
@SaCheckPermission(value = "account:editAndSave", orRole="admin")
@SaCheckPermission(value = "account:editAndSave", orRole = "admin")
public Account saveOrUpdate(@RequestBody Account data) {
accountService.save(data);
return data;
......
package vion.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import vion.cron.ContractRunner;
import vion.dto.ContractDTO;
import vion.dto.RContractStoreDTO;
import vion.model.RContractStore;
import vion.service.IContractService;
import vion.service.IRContractStoreService;
import vion.vo.ContractVO;
import java.util.List;
import java.util.stream.Collectors;
/**
* 合同管理
......@@ -28,31 +34,67 @@ public class ContractController {
private final Converter converter;
@GetMapping("/contract")
@SaCheckPermission(value = "contract:list", orRole="admin")
@SaCheckPermission(value = "contract:list", orRole = "admin")
public Page<ContractVO> list(ContractDTO dto) {
return contractService.list(dto);
}
@GetMapping("/contract/{id}")
@SaCheckPermission(value = "contract:query", orRole="admin")
@SaCheckPermission(value = "contract:query", orRole = "admin")
public ContractVO getById(@PathVariable Long id) {
return converter.convert(contractService.getById(id), new ContractVO());
}
@PostMapping("/contract/{id}")
@SaCheckPermission(value = "contract:edit", orRole="admin")
@SaCheckPermission(value = "contract:edit", orRole = "admin")
public String updateById(@PathVariable Long id, ContractDTO dto) {
return contractService.updateById(id, dto);
}
@PostMapping("/contract/store")
@SaCheckPermission(value = "contract:store:edit", orRole = "admin")
public String saveOrUpdateRContractStore(@RequestBody List<RContractStore> contractStoreList) {
return contractStoreService.saveBatch(contractStoreList) ? "更新成功" : "更新失败";
public String saveOrUpdateRContractStore(@RequestBody RContractStoreDTO dto) {
Assert.isFalse(ArrayUtil.isAllNotNull(dto.getStoreId(), dto.getContractId()), "合同id和项目id不能同时传值");
if (ObjUtil.isNotNull(dto.getContractId())) {
Opt.ofEmptyAble(dto.getStoreIds())
.ifPresent(storeIds -> {
List<RContractStore> contractStoreList = storeIds.stream()
.map(storeId -> {
RContractStore contractStore = new RContractStore();
contractStore.setContractId(dto.getContractId());
contractStore.setStoreId(storeId);
return contractStore;
}).collect(Collectors.toList());
contractStoreService.saveBatch(contractStoreList);
});
}
if (ObjUtil.isNotNull(dto.getStoreId())) {
Opt.ofEmptyAble(dto.getContractIds())
.ifPresent(contractIds -> {
List<RContractStore> contractStoreList = contractIds.stream()
.map(contractId -> {
RContractStore contractStore = new RContractStore();
contractStore.setContractId(contractId);
contractStore.setStoreId(dto.getStoreId());
return contractStore;
}).collect(Collectors.toList());
contractStoreService.saveBatch(contractStoreList);
});
}
return "成功";
}
@GetMapping("/contract/store")
@SaCheckPermission(value = "contract:store:query", orRole = "admin")
public List<RContractStore> getRContractStore(Long contractId, Long storeId) {
return contractStoreService.lambdaQuery()
.eq(ObjUtil.isNotNull(contractId), RContractStore::getContractId, contractId)
.eq(ObjUtil.isNotNull(storeId), RContractStore::getStoreId, storeId)
.list();
}
@PostMapping("/contractSync")
@SaCheckPermission(value = "contract:sync", orRole="admin")
@SaCheckPermission(value = "contract:sync", orRole = "admin")
public String manualSyncContract() {
return contractRunner.contractSync() ? "成功" : "失败";
}
......
......@@ -21,8 +21,14 @@ public class ContractPaymentController {
private final IContractPaymentService contractPaymentService;
private final Converter converter;
@GetMapping("/contractPayment/{id}")
@SaCheckPermission(value = "contractPayment:query", orRole = "admin")
public List<ContractPayment> getPaymentById(@PathVariable Long id) {
return contractPaymentService.lambdaQuery().eq(ContractPayment::getContractId, id).list();
}
@PostMapping("/contractPayment")
@SaCheckPermission(value = "contractPayment:edit", orRole="admin")
@SaCheckPermission(value = "contractPayment:edit", orRole = "admin")
public String updPayment(@RequestBody List<ContractPaymentDTO> dtoList) {
return contractPaymentService.saveBatch(converter.convert(dtoList, ContractPayment.class)) ? "更新成功" : "更新失败";
}
......
......@@ -25,20 +25,20 @@ public class DictionaryController {
private final Converter converter;
@GetMapping("/dictionarys")
@SaCheckPermission(value = "dict:list", orRole="admin")
@SaCheckPermission(value = "dict:list", orRole = "admin")
public Page<Dictionary> getDictionaryList(DictionaryDTO data) {
return dictionaryService.lambdaQuery(converter.convert(data, new Dictionary()))
.page(Page.of(data.getPageNum(), data.getPageSize()));
}
@GetMapping("/dictionary")
@SaCheckPermission(value = "dict:query", orRole="admin")
public Object getDictionaryByID(@RequestParam(name = "id") Integer id) {
@SaCheckPermission(value = "dict:query", orRole = "admin")
public Object getDictionaryById(Long id) {
return dictionaryService.getById(id);
}
@PostMapping("/dictionary")
@SaCheckPermission(value = "dict:editAndSave", orRole="admin")
@SaCheckPermission(value = "dict:editAndSave", orRole = "admin")
public String saveOrUpdateDictionary(@RequestBody DictionaryDTO data) {
Dictionary dictionary = converter.convert(data, new Dictionary());
return dictionaryService.saveOrUpdate(dictionary) ? "成功" : "失败";
......@@ -53,7 +53,7 @@ public class DictionaryController {
@GetMapping("/dictionaryType")
@SaCheckPermission(value = "dict:type:query", orRole = "admin")
public Object getDictionaryTypeByID(@RequestParam Integer id) {
public Object getDictionaryTypeById(@RequestParam Integer id) {
return dictionaryTypeService.getById(id);
}
......
......@@ -23,26 +23,26 @@ public class InspectController {
private final Converter converter;
@GetMapping("/inspects")
@SaCheckPermission(value = "inspect:list", orRole="admin")
@SaCheckPermission(value = "inspect:list", orRole = "admin")
public Page<Inspect> getInspectList(InspectDTO data) {
return inspectService.getInspectList(data);
}
@GetMapping("/inspect")
@SaCheckPermission(value = "inspect:query", orRole="admin")
@SaCheckPermission(value = "inspect:query", orRole = "admin")
public Inspect getProductById(@RequestParam(name = "id") Integer id) {
return inspectService.getById(id);
}
@PostMapping("/inspects")
@SaCheckPermission(value = "inspect:editAndSave", orRole="admin")
@SaCheckPermission(value = "inspect:editAndSave", orRole = "admin")
public String saveOrUpdate(@RequestBody InspectDTO data) {
Inspect inspect = converter.convert(data, new Inspect());
return inspectService.saveOrUpdate(inspect) ? "成功" : "失败";
}
@PostMapping("/updateInspectStatus")
@SaCheckPermission(value = "inspect:editStatus", orRole="admin")
@SaCheckPermission(value = "inspect:editStatus", orRole = "admin")
public String UpdateStatus(@RequestBody InspectDTO data) {
boolean result = inspectService.lambdaUpdate()
.eq(Inspect::getId, data.getId())
......
......@@ -22,19 +22,19 @@ public class ProductController {
private final Converter converter;
@GetMapping("/products")
@SaCheckPermission(value = "product:list", orRole="admin")
@SaCheckPermission(value = "product:list", orRole = "admin")
public Page<ProductVO> getProductList(ProductDTO productDTO) {
return productService.getProductList(productDTO);
return productService.getProductList(productDTO);
}
@GetMapping("/product")
@SaCheckPermission(value = "product:query", orRole="admin")
@SaCheckPermission(value = "product:query", orRole = "admin")
public Product getProductByID(@RequestParam Long projectId) {
return productService.getById(projectId);
}
@PostMapping("/products")
@SaCheckPermission(value = "product:editAndSave", orRole="admin")
@SaCheckPermission(value = "product:editAndSave", orRole = "admin")
public String saveOrUpdate(@RequestBody ProductDTO productDTO) {
Product data = converter.convert(productDTO, new Product());
return productService.saveOrUpdate(data) ? "成功" : "失败";
......
package vion.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.github.linpeilie.Converter;
import cn.hutool.core.lang.Opt;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -23,14 +23,21 @@ import java.util.stream.Collectors;
public class RRoleResourceController {
private final IRRoleResourceService roleResourceService;
private final Converter converter;
@PostMapping("/rRoleRes")
@SaCheckPermission(value = "role:resource:edit", orRole = "admin")
public String saveOrUpdateRUserRole(@RequestBody List<RRoleResourceDTO> dto) {
List<Long> roleIdList = dto.stream().map(RRoleResourceDTO::getRoleId).collect(Collectors.toList());
roleResourceService.lambdaUpdate().in(RRoleResource::getRoleId, roleIdList).remove();
return roleResourceService.saveBatch(converter.convert(dto, RRoleResource.class)) ? "创建成功" : "创建失败";
public String saveOrUpdateRUserRole(@RequestBody RRoleResourceDTO dto) {
roleResourceService.lambdaUpdate().in(RRoleResource::getRoleId, dto.getRoleId()).remove();
Opt.ofEmptyAble(dto.getResourceIds()).ifPresent(l -> {
List<RRoleResource> list = l.stream().map(resourceId -> {
RRoleResource rRoleResource = new RRoleResource();
rRoleResource.setRoleId(dto.getRoleId());
rRoleResource.setResourceId(resourceId);
return rRoleResource;
}).collect(Collectors.toList());
roleResourceService.saveBatch(list);
});
return "成功";
}
}
package vion.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.github.linpeilie.Converter;
import cn.hutool.core.lang.Opt;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import vion.dto.RUserRoleDTO;
import vion.model.RUserRole;
import vion.service.IRUserRoleService;
......@@ -20,13 +23,20 @@ import java.util.stream.Collectors;
public class RUserRoleController {
private final IRUserRoleService rUserRoleService;
private final Converter converter;
@PostMapping("/rUserRole")
@SaCheckPermission(value = "user:role:edit", orRole = "admin")
public String saveOrUpdateRUserRole(@RequestBody List<RUserRoleDTO> dto) {
List<Long> userIdList = dto.stream().map(RUserRoleDTO::getUserId).collect(Collectors.toList());
rUserRoleService.lambdaUpdate().in(RUserRole::getUserId, userIdList).remove();
return rUserRoleService.saveBatch(converter.convert(dto, RUserRole.class)) ? "创建成功" : "创建失败";
public String saveOrUpdateRUserRole(@RequestBody RUserRoleDTO dto) {
rUserRoleService.lambdaUpdate().in(RUserRole::getUserId, dto.getUserId()).remove();
Opt.ofEmptyAble(dto.getRoleIds()).ifPresent(l -> {
List<RUserRole> list = l.stream().map(roleId -> {
RUserRole rUserRole = new RUserRole();
rUserRole.setUserId(dto.getUserId());
rUserRole.setRoleId(roleId);
return rUserRole;
}).collect(Collectors.toList());
rUserRoleService.saveBatch(list);
});
return "成功";
}
}
......@@ -16,7 +16,6 @@ import java.util.List;
/**
* 资源管理
*
*/
@RestController
@RequestMapping("/api")
......@@ -27,33 +26,33 @@ public class ResourceController {
private final Converter converter;
@GetMapping("/resource")
@SaCheckPermission(value = "resource:list", orRole="admin")
@SaCheckPermission(value = "resource:list", orRole = "admin")
public Page<ResourceVO> list(ResourceDTO dto) {
return resourceService.list(dto);
}
@GetMapping("/resource/tree")
@SaCheckPermission
@SaCheckPermission(value = "resource:tree", orRole = "admin")
public List<Tree<Long>> listTree(Long id) {
return resourceService.listTree(id);
}
@GetMapping("/resource/{id}")
@SaCheckPermission(value = "resource:query", orRole="admin")
@SaCheckPermission(value = "resource:query", orRole = "admin")
public ResourceVO getRoleById(@PathVariable Long id) {
Resource resource = resourceService.getById(id);
return converter.convert(resource, new ResourceVO());
}
@PostMapping("/resource")
@SaCheckPermission(value = "resource:save", orRole="admin")
@SaCheckPermission(value = "resource:save", orRole = "admin")
private String save(@RequestBody ResourceDTO dto) {
Resource resource = converter.convert(dto, new Resource());
return resourceService.save(resource) ? "创建成功" : "创建失败";
}
@PostMapping("/resource/{id}")
@SaCheckPermission(value = "resource:edit", orRole="admin")
@SaCheckPermission(value = "resource:edit", orRole = "admin")
private String update(@PathVariable Long id, @RequestBody RoleDTO dto) {
Resource resource = converter.convert(dto, new Resource());
resource.setId(id);
......@@ -61,7 +60,7 @@ public class ResourceController {
}
@DeleteMapping("/resource/{id}")
@SaCheckPermission(value = "resource:remove", orRole="admin")
@SaCheckPermission(value = "resource:remove", orRole = "admin")
private String remove(@PathVariable Long id) {
return resourceService.removeById(id) ? "删除成功" : "删除失败";
}
......
......@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
......@@ -20,7 +21,6 @@ import java.util.stream.Collectors;
/**
* 角色管理
*
*/
@RestController
@RequestMapping("/api")
......@@ -35,41 +35,50 @@ public class RoleController {
private final Converter converter;
@GetMapping("/role")
@SaCheckPermission(value = "role:list", orRole="admin")
@SaCheckPermission(value = "role:list", orRole = "admin")
public Page<RoleVO> list(RoleDTO dto) {
return roleService.list(dto);
}
@GetMapping("/role/{id}")
@SaCheckPermission(value = "role:query", orRole="admin")
@SaCheckPermission(value = "role:query", orRole = "admin")
public RoleVO getRoleById(@PathVariable Long id) {
Role role = roleService.getById(id);
return converter.convert(role, new RoleVO());
}
@PostMapping("/role")
@SaCheckPermission(value = "role:save", orRole="admin")
@SaCheckPermission(value = "role:save", orRole = "admin")
private String save(@RequestBody RoleDTO dto) {
if (StrUtil.equals(dto.getCode(), "admin")) {
return "管理员角色编码[admin]已存在,不允许再次创建";
}
Role role = converter.convert(dto, new Role());
return roleService.save(role) ? "创建成功" : "创建失败";
}
@PostMapping("/role/{id}")
@SaCheckPermission(value = "role:edit", orRole="admin")
@SaCheckPermission(value = "role:edit", orRole = "admin")
private String update(@PathVariable Long id, @RequestBody RoleDTO dto) {
if (id == 1) {
return "管理员角色不允许修改";
}
Role role = converter.convert(dto, new Role());
role.setId(id);
return roleService.updateById(role) ? "更新成功" : "更新失败";
}
@DeleteMapping("/role/{id}")
@SaCheckPermission(value = "role:remove", orRole="admin")
@SaCheckPermission(value = "role:remove", orRole = "admin")
private String remove(@PathVariable Long id) {
if (id == 1) {
return "管理员角色不允许删除";
}
return roleService.removeById(id) ? "删除成功" : "删除失败";
}
@GetMapping("/role/user/{id}")
@SaCheckPermission(value = "role:user", orRole="admin")
@SaCheckPermission(value = "role:user", orRole = "admin")
public List<UserVO> listUserById(@PathVariable Long id) {
List<RUserRole> userRoleList = userRoleService.lambdaQuery().eq(RUserRole::getRoleId, id).list();
List<User> userList = Opt.ofEmptyAble(userRoleList)
......@@ -81,7 +90,7 @@ public class RoleController {
}
@GetMapping("/role/resource/{id}")
@SaCheckPermission(value = "role:resource", orRole="admin")
@SaCheckPermission(value = "role:resource", orRole = "admin")
public List<ResourceVO> listResourceById(@PathVariable Long id) {
List<RRoleResource> roleResourceList = roleResourceService.lambdaQuery().eq(RRoleResource::getRoleId, id).list();
List<Resource> resourceList = Opt.ofEmptyAble(roleResourceList)
......
......@@ -33,13 +33,13 @@ public class ServiceOrderController {
private final Converter converter;
@GetMapping("/order/{id}")
@SaCheckPermission(value = "order:query", orRole="admin")
@SaCheckPermission(value = "order:query", orRole = "admin")
public ServiceOrder getOrderById(@PathVariable Long id) {
return serviceOrderService.getById(id);
}
@PostMapping("/order")
@SaCheckPermission(value = "order:save", orRole="admin")
@SaCheckPermission(value = "order:save", orRole = "admin")
private Object save(@RequestBody ServiceOrderDTO serviceOrderDTO) {
Long count = serviceOrderService.lambdaQuery().eq(ServiceOrder::getTaskId, serviceOrderDTO.getTaskId()).count();
Assert.isFalse(count > 0, "该工单已存在服务单,不能重复创建!");
......@@ -49,7 +49,7 @@ public class ServiceOrderController {
}
@PostMapping("/order/{id}")
@SaCheckPermission(value = "order:edit", orRole="admin")
@SaCheckPermission(value = "order:edit", orRole = "admin")
private String update(@PathVariable Long id, @RequestBody ServiceOrderDTO serviceOrderDTO) {
ServiceOrder serviceOrder = converter.convert(serviceOrderDTO, new ServiceOrder());
serviceOrder.setId(id);
......@@ -57,7 +57,7 @@ public class ServiceOrderController {
}
@DeleteMapping("/order/{id}")
@SaCheckPermission(value = "order:remove", orRole="admin")
@SaCheckPermission(value = "order:remove", orRole = "admin")
private String remove(@PathVariable Long id) {
return serviceOrderService.removeById(id) ? "删除成功" : "删除失败";
}
......@@ -76,7 +76,7 @@ public class ServiceOrderController {
/**
* 签字专用更新接口
*
* @param unid 服务单unid
* @param unid 服务单unid
* @param serviceOrderDTO dto
* @return java.lang.String
*/
......@@ -87,7 +87,7 @@ public class ServiceOrderController {
}
@GetMapping("/order/pushWechat")
@SaCheckPermission(value = "order:wechatPush", orRole="admin")
@SaCheckPermission(value = "order:wechatPush", orRole = "admin")
public String sendOrder(Long id) {
return serviceOrderService.sendOrder(id);
}
......
......@@ -76,9 +76,9 @@ public class StoreController {
return storeService.updateStoreStage(statusDTO, token);
}
@GetMapping("/store/contract/{id}")
// 未用到
// @GetMapping("/store/contract/{id}")
@SaCheckPermission(value = "store:contract", orRole="admin")
// todo 权限未加库
public List<ContractVO> listContractById(@PathVariable Long id) {
List<RContractStore> contractStoreList = contractStoreService.lambdaQuery().eq(RContractStore::getStoreId, id).list();
List<Long> contractIdList = contractStoreList.stream().map(RContractStore::getContractId).collect(Collectors.toList());
......
......@@ -24,19 +24,19 @@ public class TaskController {
private final IFaultLogService faultLogService;
@GetMapping("/tasks")
@SaCheckPermission(value = "task:list", orRole="admin")
@SaCheckPermission(value = "task:list", orRole = "admin")
public Page<TaskVO> getTaskList(TaskDTO data) {
return taskService.getTaskList(data);
}
@GetMapping("/task")
@SaCheckPermission(value = "task:query", orRole="admin")
@SaCheckPermission(value = "task:query", orRole = "admin")
public TaskVO getTaskById(Long taskId) {
return taskService.getTaskById(taskId);
}
@PostMapping("/tasks")
@SaCheckPermission(value = "task:editAndSave", orRole="admin")
@SaCheckPermission(value = "task:editAndSave", orRole = "admin")
public Long saveOrUpdate(TaskDTO data, @RequestHeader String token) {
return taskService.circTask(data, token);
}
......
......@@ -17,8 +17,8 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 预工单
*/
* 预工单
*/
@RestController
@RequestMapping(Global.BASE_URL)
@RequiredArgsConstructor
......@@ -30,19 +30,19 @@ public class TaskTempController {
private final Converter converter;
@GetMapping("/taskTemps")
@SaCheckPermission(value = "taskTemp:list", orRole="admin")
@SaCheckPermission(value = "taskTemp:list", orRole = "admin")
public Page<TaskTempVO> getTaskTempList(TaskTempDTO data) {
return taskTempService.getTaskTempList(data);
}
@GetMapping("/taskTemp")
@SaCheckPermission(value = "taskTemp:query", orRole="admin")
@SaCheckPermission(value = "taskTemp:query", orRole = "admin")
public TaskTempVO getTaskTempById(Long id) {
return taskTempService.getTaskTempById(id);
}
@PostMapping("/taskTemp")
@SaCheckPermission(value = "taskTemp:editAndSave", orRole="admin")
@SaCheckPermission(value = "taskTemp:editAndSave", orRole = "admin")
public Object saveOrUpdateTaskTemp(TaskTempDTO data) {
return taskTempService.saveOrUpdTaskTemp(data);
}
......@@ -59,7 +59,7 @@ public class TaskTempController {
}
@PostMapping("/taskTemp/{id}")
@SaCheckPermission(value = "taskTemp:edit", orRole="admin")
@SaCheckPermission(value = "taskTemp:edit", orRole = "admin")
public String upd(@PathVariable(name = "id") Long id, TaskTempDTO data) {
TaskTemp taskTemp = converter.convert(data, new TaskTemp());
taskTemp.setId(id);
......
......@@ -48,24 +48,23 @@ public class UserController {
private final WechatMod wechatMod;
@GetMapping("/users")
@SaCheckPermission(value = "user:list", orRole="admin")
public Page<User> getUserList(UserDTO dto) {
return userService.lambdaQuery(converter.convert(dto, new User()))
.orderByDesc(User::getModifyTime)
.page(Page.of(dto.getPageNum(), dto.getPageSize()));
@SaCheckPermission(value = "user:list", orRole = "admin")
public Page<UserVO> getUserList(UserDTO dto) {
return userService.getUserList(dto);
}
@GetMapping("/user")
@SaCheckPermission(value = "user:query", orRole="admin")
@SaCheckPermission(value = "user:query", orRole = "admin")
public User getUserByID(@RequestParam(name = "id") Integer id) {
return userService.getById(id);
}
@PostMapping("/user")
@SaCheckPermission(value = "user:edit", orRole="admin")
@SaCheckPermission(value = "user:edit", orRole = "admin")
public String update(@RequestBody List<User> data) {
return Opt.ofEmptyAble(data).map(userService::updateBatchById).orElse(false) ? "更新成功" : "更新失败";
}
@GetMapping("/user/{token}")
@SaCheckPermission(value = "user:token:query", orRole = "admin")
public UserVO getUserByToken(@PathVariable String token) {
......@@ -73,14 +72,13 @@ public class UserController {
}
@GetMapping("/orgTree")
@SaCheckPermission(value = "user:orgTree", orRole="admin")
@SaCheckPermission(value = "user:orgTree", orRole = "admin")
public List<Tree<String>> getOrgTree(String deptId) {
return userService.getOrgTree(deptId);
}
@GetMapping("/user/role/{id}")
@SaCheckPermission(value = "user:role", orRole="admin")
// todo 权限未加库
@SaCheckPermission(value = "user:role", orRole = "admin")
public List<RoleVO> listRoleById(@PathVariable Long id) {
List<RUserRole> userRoleList = userRoleService.lambdaQuery().eq(RUserRole::getUserId, id).list();
List<Role> roleList = Opt.ofEmptyAble(userRoleList)
......
package vion.cron;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import vion.third.DingMod;
/**
* @author HlQ
* @date 2023/11/30
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class OrgRunner {
private final DingMod dingMod;
@Scheduled(cron = "0 0 2 * * ?")
public void syncOrg() {
log.info("钉钉组织关系同步启动");
dingMod.getDeptList();
dingMod.getDingUserList();
log.info("钉钉组织关系同步完成");
}
}
package vion.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class RContractStoreDTO {
private Long id;
/**
* 合同ID
*/
private Long contractId;
/**
* 项目ID
*/
private Long storeId;
private List<Long> contractIds;
private List<Long> storeIds;
}
\ No newline at end of file
......@@ -3,6 +3,8 @@ package vion.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author HlQ
* @date 2023/11/28
......@@ -21,5 +23,7 @@ public class RRoleResourceDTO extends BaseDTO {
*/
private Long resourceId;
private List<Long> resourceIds;
}
\ No newline at end of file
......@@ -3,6 +3,8 @@ package vion.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author HlQ
* @date 2023/11/28
......@@ -20,4 +22,6 @@ public class RUserRoleDTO extends BaseDTO {
* 角色id
*/
private Long roleId;
private List<Long> roleIds;
}
\ No newline at end of file
......@@ -15,7 +15,6 @@ public class UserDTO extends BaseDTO {
private Long id;
private String userid;
private String username;
private String password;
private String phone;
private Long deptId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
......
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Account;
public interface AccountMapper extends BaseMapper<Account> {
public interface AccountMapper extends MPJBaseMapper<Account> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Address;
public interface AddressMapper extends BaseMapper<Address> {
public interface AddressMapper extends MPJBaseMapper<Address> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Contract;
/**
* @author HlQ
* @date 2023/11/29
*/
public interface ContractMapper extends BaseMapper<Contract> {
public interface ContractMapper extends MPJBaseMapper<Contract> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.ContractPayment;
/**
* @author HlQ
* @date 2023/11/29
*/
public interface ContractPaymentMapper extends BaseMapper<ContractPayment> {
public interface ContractPaymentMapper extends MPJBaseMapper<ContractPayment> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Dept;
/**
* @author HlQ
* @date 2023/11/10
*/
public interface DeptMapper extends BaseMapper<Dept> {
public interface DeptMapper extends MPJBaseMapper<Dept> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Dictionary;
public interface DictionaryMapper extends BaseMapper<Dictionary> {
public interface DictionaryMapper extends MPJBaseMapper<Dictionary> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.DictionaryType;
public interface DictionaryTypeMapper extends BaseMapper<DictionaryType> {
public interface DictionaryTypeMapper extends MPJBaseMapper<DictionaryType> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.FaultLog;
public interface FaultLogMapper extends BaseMapper<FaultLog> {
public interface FaultLogMapper extends MPJBaseMapper<FaultLog> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.FileInfo;
public interface FileMapper extends BaseMapper<FileInfo> {
public interface FileMapper extends MPJBaseMapper<FileInfo> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Inspect;
public interface InspectMapper extends BaseMapper<Inspect> {
public interface InspectMapper extends MPJBaseMapper<Inspect> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Product;
public interface ProductMapper extends BaseMapper<Product> {
public interface ProductMapper extends MPJBaseMapper<Product> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.RContractStore;
/**
* @author HlQ
* @date 2023/11/29
*/
public interface RContractStoreMapper extends BaseMapper<RContractStore> {
public interface RContractStoreMapper extends MPJBaseMapper<RContractStore> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.RRoleResource;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface RRoleResourceMapper extends BaseMapper<RRoleResource> {
public interface RRoleResourceMapper extends MPJBaseMapper<RRoleResource> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.RUserRole;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface RUserRoleMapper extends BaseMapper<RUserRole> {
public interface RUserRoleMapper extends MPJBaseMapper<RUserRole> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Resource;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface ResourceMapper extends BaseMapper<Resource> {
public interface ResourceMapper extends MPJBaseMapper<Resource> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Role;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface RoleMapper extends BaseMapper<Role> {
public interface RoleMapper extends MPJBaseMapper<Role> {
}
\ No newline at end of file
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.ServiceOrder;
/**
* @author HlQ
* @date 2023/11/21
*/
public interface ServiceOrderMapper extends BaseMapper<ServiceOrder> {
public interface ServiceOrderMapper extends MPJBaseMapper<ServiceOrder> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Store;
public interface StoreMapper extends BaseMapper<Store> {
public interface StoreMapper extends MPJBaseMapper<Store> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.Task;
public interface TaskMapper extends BaseMapper<Task> {
public interface TaskMapper extends MPJBaseMapper<Task> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.TaskTemp;
public interface TaskTempMapper extends BaseMapper<TaskTemp> {
public interface TaskTempMapper extends MPJBaseMapper<TaskTemp> {
}
package vion.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import vion.model.User;
public interface UserMapper extends BaseMapper<User> {
public interface UserMapper extends MPJBaseMapper<User> {
}
......@@ -2,7 +2,10 @@ package vion.model;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import vion.dto.RContractStoreDTO;
import java.util.Date;
......@@ -12,6 +15,9 @@ import java.util.Date;
*/
@Data
@TableName(value = "r_contract_store")
@AutoMappers({
@AutoMapper(target = RContractStoreDTO.class),
})
public class RContractStore {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
......
......@@ -26,7 +26,7 @@ public class Role {
/**
* 角色名称
*/
@TableField(value = "\"name\"")
@TableField(value = "\"name\"", condition = SqlCondition.LIKE)
private String name;
/**
......
......@@ -25,7 +25,6 @@ public class User {
private String userid;
@TableField(condition = SqlCondition.LIKE)
private String username;
private String password;
private String phone;
private Long deptId;
@TableField(value = "create_time", fill = FieldFill.INSERT)
......
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.Account;
public interface IAccountService extends IService<Account> {
public interface IAccountService extends MPJBaseService<Account> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.Address;
public interface IAddressService extends IService<Address> {
public interface IAddressService extends MPJBaseService<Address> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.Contract;
import vion.model.ContractPayment;
......@@ -8,7 +8,7 @@ import vion.model.ContractPayment;
* @author HlQ
* @date 2023/11/29
*/
public interface IContractPaymentService extends IService<ContractPayment> {
public interface IContractPaymentService extends MPJBaseService<ContractPayment> {
void calMoney(Contract contract);
void calMoney(Contract exitContract, Contract dto);
}
......@@ -3,14 +3,14 @@ package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import vion.dto.ContractDTO;
import vion.model.Contract;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.vo.ContractVO;
/**
* @author HlQ
* @date 2023/11/29
*/
public interface IContractService extends IService<Contract>{
public interface IContractService extends MPJBaseService<Contract>{
Page<ContractVO> list(ContractDTO dto);
......
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.Dept;
/**
* @author HlQ
* @date 2023/11/10
*/
public interface IDeptService extends IService<Dept> {
public interface IDeptService extends MPJBaseService<Dept> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.Dictionary;
public interface IDictionaryService extends IService<Dictionary> {
public interface IDictionaryService extends MPJBaseService<Dictionary> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.DictionaryType;
public interface IDictionaryTypeService extends IService<DictionaryType> {
public interface IDictionaryTypeService extends MPJBaseService<DictionaryType> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.FaultLog;
public interface IFaultLogService extends IService<FaultLog> {
public interface IFaultLogService extends MPJBaseService<FaultLog> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.FileInfo;
public interface IFileService extends IService<FileInfo> {
public interface IFileService extends MPJBaseService<FileInfo> {
}
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.InspectDTO;
import vion.model.Inspect;
public interface IInspectService extends IService<Inspect> {
public interface IInspectService extends MPJBaseService<Inspect> {
Page<Inspect> getInspectList(InspectDTO data);
}
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.ProductDTO;
import vion.model.Product;
import vion.vo.ProductVO;
public interface IProductService extends IService<Product> {
public interface IProductService extends MPJBaseService<Product> {
Page<ProductVO> getProductList(ProductDTO productDTO);
}
package vion.service;
import vion.model.RContractStore;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
/**
* @author HlQ
* @date 2023/11/29
*/
public interface IRContractStoreService extends IService<RContractStore>{
public interface IRContractStoreService extends MPJBaseService<RContractStore>{
}
package vion.service;
import vion.model.RRoleResource;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface IRRoleResourceService extends IService<RRoleResource>{
public interface IRRoleResourceService extends MPJBaseService<RRoleResource>{
}
package vion.service;
import vion.model.RUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
/**
* @author HlQ
* @date 2023/11/28
*/
public interface IRUserRoleService extends IService<RUserRole>{
public interface IRUserRoleService extends MPJBaseService<RUserRole>{
}
......@@ -2,7 +2,7 @@ package vion.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.ResourceDTO;
import vion.model.Resource;
import vion.vo.ResourceVO;
......@@ -13,7 +13,7 @@ import java.util.List;
* @author HlQ
* @date 2023/11/28
*/
public interface IResourceService extends IService<Resource>{
public interface IResourceService extends MPJBaseService<Resource>{
Page<ResourceVO> list(ResourceDTO dto);
......
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.RoleDTO;
import vion.model.Role;
import vion.vo.RoleVO;
......@@ -10,7 +10,7 @@ import vion.vo.RoleVO;
* @author HlQ
* @date 2023/11/28
*/
public interface IRoleService extends IService<Role>{
public interface IRoleService extends MPJBaseService<Role> {
Page<RoleVO> list(RoleDTO dto);
}
package vion.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.model.ServiceOrder;
/**
* @author HlQ
* @date 2023/11/21
*/
public interface IServiceOrderService extends IService<ServiceOrder> {
public interface IServiceOrderService extends MPJBaseService<ServiceOrder> {
String sendOrder(Long id);
}
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.StatusDTO;
import vion.dto.StoreDTO;
import vion.model.Store;
import vion.vo.StoreVO;
public interface IStoreService extends IService<Store> {
public interface IStoreService extends MPJBaseService<Store> {
Page<StoreVO> getStoreList(StoreDTO data);
......
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.TaskDTO;
import vion.model.Task;
import vion.vo.TaskVO;
public interface ITaskService extends IService<Task> {
public interface ITaskService extends MPJBaseService<Task> {
Page<TaskVO> getTaskList(TaskDTO data);
......
package vion.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.TaskTempDTO;
import vion.model.TaskTemp;
import vion.vo.TaskTempVO;
public interface ITaskTempService extends IService<TaskTemp> {
public interface ITaskTempService extends MPJBaseService<TaskTemp> {
Page<TaskTempVO> getTaskTempList(TaskTempDTO data);
TaskTempVO getTaskTempById(Long id);
......
package vion.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService;
import vion.dto.UserDTO;
import vion.model.User;
import vion.vo.UserVO;
import java.util.List;
public interface IUserService extends IService<User> {
public interface IUserService extends MPJBaseService<User> {
Page<UserVO> getUserList(UserDTO dto);
List<Tree<String>> getOrgTree(String deptId);
......
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.AccountMapper;
import vion.model.Account;
import vion.service.IAccountService;
@Service
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements IAccountService {
public class AccountServiceImpl extends MPJBaseServiceImpl<AccountMapper, Account> implements IAccountService {
}
\ No newline at end of file
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.AddressMapper;
import vion.model.Address;
import vion.service.IAddressService;
@Service
public class AddressServiceImpl extends ServiceImpl<AddressMapper, Address> implements IAddressService {
public class AddressServiceImpl extends MPJBaseServiceImpl<AddressMapper, Address> implements IAddressService {
}
package vion.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import vion.mapper.ContractPaymentMapper;
......@@ -20,23 +20,23 @@ import java.util.stream.Collectors;
*/
@Service
@RequiredArgsConstructor
public class ContractPaymentServiceImpl extends ServiceImpl<ContractPaymentMapper, ContractPayment> implements IContractPaymentService {
public class ContractPaymentServiceImpl extends MPJBaseServiceImpl<ContractPaymentMapper, ContractPayment> implements IContractPaymentService {
@Override
public void calMoney(Contract contract) {
List<ContractPayment> contractPaymentList = this.lambdaQuery().eq(ContractPayment::getContractId, contract.getId()).list();
public void calMoney(Contract exitContract, Contract dto) {
List<ContractPayment> contractPaymentList = this.lambdaQuery().eq(ContractPayment::getContractId, dto.getId()).list();
Map<Integer, BigDecimal> type2RatioMap = contractPaymentList.stream().collect(Collectors.toMap(ContractPayment::getPaymentType, ContractPayment::getPaymentRatio));
Integer status = contract.getStatus();
Integer status = dto.getStatus() == null ? exitContract.getStatus() : dto.getStatus();
BigDecimal sumRatio = new BigDecimal(0);
for (int i = 1; i <= status; i++) {
BigDecimal ratio = type2RatioMap.get(i);
NumberUtil.add(ratio, sumRatio);
}
BigDecimal totalAmount = contract.getTotalAmount();
BigDecimal totalAmount = exitContract.getTotalAmount();
BigDecimal curAmount = NumberUtil.mul(totalAmount, sumRatio);
BigDecimal recAmount = NumberUtil.sub(curAmount, contract.getPaidAmount());
BigDecimal recAmount = NumberUtil.sub(curAmount, dto.getPaidAmount() != null ? dto.getPaidAmount() : exitContract.getPaidAmount());
BigDecimal outsideAmount = NumberUtil.sub(totalAmount, recAmount);
contract.setReceivableAmount(recAmount);
contract.setOutstandingAmount(outsideAmount);
dto.setReceivableAmount(recAmount);
dto.setOutstandingAmount(outsideAmount);
}
}
......@@ -7,7 +7,7 @@ import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
......@@ -34,7 +34,7 @@ import java.util.List;
*/
@Service
@RequiredArgsConstructor
public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements IContractService {
public class ContractServiceImpl extends MPJBaseServiceImpl<ContractMapper, Contract> implements IContractService {
private final IFileService fileService;
private final IContractPaymentService contractPaymentService;
......@@ -56,8 +56,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
Contract exitContract = this.getById(id);
Contract contract = converter.convert(dto, new Contract());
contract.setId(id);
if (ObjUtil.notEqual(contract.getStatus(), exitContract.getStatus())) {
contractPaymentService.calMoney(contract);
if ((ObjUtil.notEqual(contract.getStatus(), exitContract.getStatus()) && contract.getStatus() != null) || dto.getPaidAmount() != null) {
contractPaymentService.calMoney(exitContract, contract);
}
this.updateById(contract);
UserVO userVO = (UserVO) StpUtil.getTokenSession().get("curLoginUser");
......
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.DeptMapper;
import vion.model.Dept;
......@@ -11,5 +11,5 @@ import vion.service.IDeptService;
* @date 2023/11/10
*/
@Service
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
public class DeptServiceImpl extends MPJBaseServiceImpl<DeptMapper, Dept> implements IDeptService {
}
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.DictionaryMapper;
import vion.model.Dictionary;
import vion.service.IDictionaryService;
@Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements IDictionaryService {
public class DictionaryServiceImpl extends MPJBaseServiceImpl<DictionaryMapper, Dictionary> implements IDictionaryService {
}
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.DictionaryTypeMapper;
import vion.model.DictionaryType;
import vion.service.IDictionaryTypeService;
@Service
public class DictionaryTypeServiceImpl extends ServiceImpl<DictionaryTypeMapper, DictionaryType> implements IDictionaryTypeService {
public class DictionaryTypeServiceImpl extends MPJBaseServiceImpl<DictionaryTypeMapper, DictionaryType> implements IDictionaryTypeService {
}
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.FaultLogMapper;
import vion.model.FaultLog;
import vion.service.IFaultLogService;
@Service
public class FaultLogServiceImpl extends ServiceImpl<FaultLogMapper, FaultLog> implements IFaultLogService {
public class FaultLogServiceImpl extends MPJBaseServiceImpl<FaultLogMapper, FaultLog> implements IFaultLogService {
}
package vion.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import vion.mapper.FileMapper;
import vion.model.FileInfo;
import vion.service.IFileService;
@Service
public class FileServiceImpl extends ServiceImpl<FileMapper, FileInfo> implements IFileService {
public class FileServiceImpl extends MPJBaseServiceImpl<FileMapper, FileInfo> implements IFileService {
}
package vion.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
......@@ -18,7 +18,7 @@ import java.util.List;
@Service
@RequiredArgsConstructor
public class InspectServiceImpl extends ServiceImpl<InspectMapper, Inspect> implements IInspectService {
public class InspectServiceImpl extends MPJBaseServiceImpl<InspectMapper, Inspect> implements IInspectService {
private final IStoreService storeService;
private final IAccountService accountService;
......
......@@ -2,7 +2,7 @@ package vion.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
......@@ -20,7 +20,7 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
public class ProductServiceImpl extends MPJBaseServiceImpl<ProductMapper, Product> implements IProductService {
private final IStoreService storeService;
private final Converter converter;
......
package vion.service.impl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import vion.mapper.RContractStoreMapper;
import vion.model.RContractStore;
import vion.service.IRContractStoreService;
......@@ -10,6 +10,6 @@ import vion.service.IRContractStoreService;
* @date 2023/11/29
*/
@Service
public class RContractStoreServiceImpl extends ServiceImpl<RContractStoreMapper, RContractStore> implements IRContractStoreService {
public class RContractStoreServiceImpl extends MPJBaseServiceImpl<RContractStoreMapper, RContractStore> implements IRContractStoreService {
}
package vion.service.impl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import vion.mapper.RRoleResourceMapper;
import vion.model.RRoleResource;
import vion.service.IRRoleResourceService;
......@@ -10,6 +10,6 @@ import vion.service.IRRoleResourceService;
* @date 2023/11/28
*/
@Service
public class RRoleResourceServiceImpl extends ServiceImpl<RRoleResourceMapper, RRoleResource> implements IRRoleResourceService {
public class RRoleResourceServiceImpl extends MPJBaseServiceImpl<RRoleResourceMapper, RRoleResource> implements IRRoleResourceService {
}
package vion.service.impl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import vion.mapper.RUserRoleMapper;
import vion.model.RUserRole;
import vion.service.IRUserRoleService;
......@@ -10,6 +10,6 @@ import vion.service.IRUserRoleService;
* @date 2023/11/28
*/
@Service
public class RUserRoleServiceImpl extends ServiceImpl<RUserRoleMapper, RUserRole> implements IRUserRoleService {
public class RUserRoleServiceImpl extends MPJBaseServiceImpl<RUserRoleMapper, RUserRole> implements IRUserRoleService {
}
......@@ -8,7 +8,7 @@ import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
......@@ -28,7 +28,7 @@ import java.util.Map;
*/
@Service
@RequiredArgsConstructor
public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> implements IResourceService {
public class ResourceServiceImpl extends MPJBaseServiceImpl<ResourceMapper, Resource> implements IResourceService {
private final Converter converter;
......
package vion.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import vion.dto.RoleDTO;
import vion.mapper.RoleMapper;
import vion.model.RUserRole;
import vion.model.Role;
import vion.model.User;
import vion.service.IRUserRoleService;
import vion.service.IRoleService;
import vion.service.IUserService;
import vion.vo.RoleVO;
import vion.vo.UserVO;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author HlQ
......@@ -25,7 +19,7 @@ import java.util.stream.Collectors;
*/
@Service
@RequiredArgsConstructor
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
public class RoleServiceImpl extends MPJBaseServiceImpl<RoleMapper, Role> implements IRoleService {
private final Converter converter;
......
......@@ -2,17 +2,17 @@ package vion.service.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Opt;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import org.springframework.stereotype.Service;
import vion.third.WechatMod;
import vion.mapper.ServiceOrderMapper;
import vion.model.ServiceOrder;
import vion.model.Task;
import vion.service.IServiceOrderService;
import vion.service.ITaskService;
import vion.service.ITaskTempService;
import vion.third.WechatMod;
import java.util.List;
......@@ -22,7 +22,7 @@ import java.util.List;
*/
@Service
@RequiredArgsConstructor
public class ServiceOrderServiceImpl extends ServiceImpl<ServiceOrderMapper, ServiceOrder> implements IServiceOrderService {
public class ServiceOrderServiceImpl extends MPJBaseServiceImpl<ServiceOrderMapper, ServiceOrder> implements IServiceOrderService {
private final ITaskService taskService;
private final ITaskTempService taskTempService;
......
......@@ -6,10 +6,11 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
......@@ -31,7 +32,7 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements IStoreService {
public class StoreServiceImpl extends MPJBaseServiceImpl<StoreMapper, Store> implements IStoreService {
private final IAccountService accountService;
private final IRContractStoreService contractStoreService;
......@@ -86,10 +87,12 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
Contract contract = id2ContractMap.get(id);
Date maintainSdate = contract.getMaintainSdate();
Date maintainEdate = contract.getMaintainEdate();
boolean isIn = DateUtil.isIn(new Date(), maintainSdate, maintainEdate);
maintainStatusSet.add(isIn);
if (ArrayUtil.isAllNotNull(maintainSdate, maintainEdate)) {
boolean isIn = DateUtil.isIn(new Date(), maintainSdate, maintainEdate);
maintainStatusSet.add(isIn);
}
});
storeVO.setMaintainStatus(maintainStatusSet.contains(true) ? "在保" : "脱保");
storeVO.setMaintainStatus(CollUtil.isEmpty(maintainStatusSet) ? "--" : maintainStatusSet.contains(true) ? "在保" : "脱保");
}
storeVOList.add(storeVO);
......
......@@ -12,7 +12,8 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
......@@ -20,26 +21,26 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import vion.Global;
import vion.third.DingMod;
import vion.third.WechatMod;
import vion.dto.TaskDTO;
import vion.mapper.ServiceOrderMapper;
import vion.mapper.TaskMapper;
import vion.model.Dictionary;
import vion.model.*;
import vion.service.*;
import vion.third.DingMod;
import vion.third.WechatMod;
import vion.vo.TaskTempVO;
import vion.vo.TaskVO;
import vion.vo.UserVO;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService {
public class TaskServiceImpl extends MPJBaseServiceImpl<TaskMapper, Task> implements ITaskService {
private final ITaskTempService taskTempService;
private final IFileService fileService;
......@@ -49,7 +50,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
private final IAccountService accountService;
private final IDictionaryService dictionaryService;
// 循环依赖,这里用mapper
// private final IServiceOrderService serviceOrderService;
// private final MPJBaseServiceOrderService serviceOrderService;
private final ServiceOrderMapper serviceOrderMapper;
private final DingMod dingMod;
private final WechatMod wechatMod;
......@@ -59,7 +60,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
@Override
public Page<TaskVO> getTaskList(TaskDTO data) {
Page<Task> taskList = this
/*Page<Task> taskList = this
.lambdaQuery(converter.convert(data, new Task()))
.between(data.getStartdate() != null && data.getEnddate() != null, Task::getRepairTime, data.getStartdate(), data.getEnddate())
.lt(data.getCurDate() != null, Task::getExpDate, data.getCurDate())
......@@ -82,19 +83,31 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
taskVO.setAccountName(accountList.stream().filter(a -> a.getId().equals(v.getAccountId())).map(Account::getName).findFirst().orElse("--"));
taskVO.setServiceOrder(taskId2OrderMap.get(v.getId()));
taskVOList.add(taskVO);
}));
return Page.<TaskVO>of(data.getPageNum(), data.getPageSize(), taskList.getTotal()).setRecords(taskVOList);
}));*/
MPJLambdaWrapper<Task> wrapper = new MPJLambdaWrapper<>(converter.convert(data, new Task()))
.selectAll(Task.class)
.selectAs(Store::getName, TaskVO::getStoreName)
.selectAs(Account::getName, TaskVO::getAccountName)
.selectAssociation(ServiceOrder.class, TaskVO::getServiceOrder)
.leftJoin(Store.class, Store::getId, Task::getStoreId)
.leftJoin(Account.class, Account::getId, Task::getAccountId)
.leftJoin(ServiceOrder.class, ServiceOrder::getTaskId, Task::getId)
.between(data.getStartdate() != null && data.getEnddate() != null, Task::getRepairTime, data.getStartdate(), data.getEnddate())
.lt(data.getCurDate() != null, Task::getExpDate, data.getCurDate());
return this.selectJoinListPage(Page.of(data.getPageNum(), data.getPageSize()), TaskVO.class, wrapper);
}
@Override
public TaskVO getTaskById(Long taskId) {
Task task = this.getById(taskId);
List<FileInfo> fileInfos = fileService.list(Wrappers.<FileInfo>lambdaUpdate()
.eq(FileInfo::getSourceId, task.getId())
.eq(FileInfo::getStoreId, task.getStoreId()));
TaskVO taskVO = converter.convert(task, TaskVO.class);
taskVO.setFileList(fileInfos);
return taskVO;
MPJLambdaWrapper<Task> wrapper = new MPJLambdaWrapper<Task>()
.selectAll(Task.class)
.selectCollection(FileInfo.class, TaskTempVO::getFileList)
.leftJoin(FileInfo.class, on -> on
.eq(FileInfo::getSourceId, Task::getId)
.eq(FileInfo::getStoreId, Task::getStoreId))
.eq(Task::getId, taskId);
return this.selectJoinOne(TaskVO.class, wrapper);
}
@Override
......@@ -211,7 +224,6 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
Opt.ofNullable(data.getFiles())
.ifPresent(fileList ->
Arrays.stream(fileList).forEach(infile -> {
//上传url地址
String orgName = infile.getOriginalFilename();
String fileName = orgName.substring(0, orgName.lastIndexOf("."));
String fileExt = orgName.substring(orgName.lastIndexOf("."));
......
package vion.service.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Opt;
......@@ -8,15 +7,13 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import vion.third.DingMod;
import vion.third.WechatMod;
import vion.dto.TaskTempDTO;
import vion.mapper.TaskTempMapper;
import vion.model.FileInfo;
......@@ -25,6 +22,8 @@ import vion.model.User;
import vion.service.IFileService;
import vion.service.ITaskTempService;
import vion.service.IUserService;
import vion.third.DingMod;
import vion.third.WechatMod;
import vion.vo.TaskTempVO;
import java.io.File;
......@@ -36,7 +35,7 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class TaskTempServiceImpl extends ServiceImpl<TaskTempMapper, TaskTemp> implements ITaskTempService {
public class TaskTempServiceImpl extends MPJBaseServiceImpl<TaskTempMapper, TaskTemp> implements ITaskTempService {
private final IFileService fileService;
private final IUserService userService;
......@@ -59,15 +58,14 @@ public class TaskTempServiceImpl extends ServiceImpl<TaskTempMapper, TaskTemp> i
@Override
public TaskTempVO getTaskTempById(Long id) {
TaskTemp taskTemp = this.getById(id);
List<FileInfo> fileInfos = Opt.ofNullable(taskTemp)
.map(tmp -> fileService.list(Wrappers.<FileInfo>lambdaUpdate()
.eq(FileInfo::getSourceId, tmp.getId())
.eq(FileInfo::getStoreId, 0L)))
.orElse(ListUtil.empty());
TaskTempVO taskTempVO = converter.convert(taskTemp, TaskTempVO.class);
taskTempVO.setFileList(fileInfos);
return taskTempVO;
MPJLambdaWrapper<TaskTemp> wrapper = new MPJLambdaWrapper<TaskTemp>()
.selectAll(TaskTemp.class)
.selectCollection(FileInfo.class, TaskTempVO::getFileList)
.leftJoin(FileInfo.class, on -> on
.eq(FileInfo::getSourceId, TaskTemp::getId)
.eq(FileInfo::getStoreId, 0L))
.eq(TaskTemp::getId, id);
return this.selectJoinOne(TaskTempVO.class, wrapper);
}
@Override
......
package vion.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import vion.dto.UserDTO;
import vion.mapper.UserMapper;
import vion.model.Dept;
import vion.model.RUserRole;
import vion.model.Role;
import vion.model.User;
import vion.service.IDeptService;
import vion.service.IRoleService;
import vion.service.IUserService;
import vion.vo.RoleVO;
import vion.vo.UserVO;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implements IUserService {
private final IDeptService deptService;
private final IRoleService roleService;
private final Converter converter;
@Override
public Page<UserVO> getUserList(UserDTO dto) {
MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<>(converter.convert(dto, new User()))
.selectAll(User.class)
.select(Dept::getDeptName)
.leftJoin(Dept.class, Dept::getDeptId, User::getDeptId);
Page<UserVO> userVOS = this.selectJoinListPage(Page.of(dto.getPageNum(), dto.getPageSize()), UserVO.class, wrapper);
MPJLambdaWrapper<Role> roleWrapper = new MPJLambdaWrapper<Role>()
.selectAll(Role.class)
.select(RUserRole::getUserId)
.leftJoin(RUserRole.class, RUserRole::getRoleId, Role::getId)
.in(RUserRole::getUserId, userVOS.getRecords().stream().map(UserVO::getId).collect(Collectors.toList()));
List<RoleVO> roleVOList = roleService.selectJoinList(RoleVO.class, roleWrapper);
Opt.ofEmptyAble(roleVOList)
.map(l -> l.stream().collect(Collectors.groupingBy(RoleVO::getUserId)))
.ifPresent(m -> userVOS.getRecords().forEach(u -> u.setRoleVOList(m.getOrDefault(u.getId(), ListUtil.empty()))));
return userVOS;
}
@Override
public List<Tree<String>> getOrgTree(String deptId) {
......
......@@ -238,25 +238,7 @@ public class DingMod {
return "该用户禁止登录系统,请联系管理员!";
}
Long id = userVO.getId();
List<RUserRole> userRoleList = userRoleService.lambdaQuery().eq(RUserRole::getUserId, id).list();
List<RRoleResource> roleResourceList = Opt.ofEmptyAble(userRoleList)
.map(urList -> urList.stream().map(RUserRole::getRoleId).collect(Collectors.toList()))
.map(roleIdList -> {
// 获取用户关联的角色
List<Role> roles = roleService.listByIds(roleIdList);
List<RoleVO> roleVOS = converter.convert(roles, RoleVO.class);
userVO.setRoleVOList(roleVOS);
return roleResourceService.lambdaQuery().select(RRoleResource::getResourceId).in(RRoleResource::getRoleId, roleIdList).list();
}).orElse(ListUtil.empty());
// 获取角色关联的资源
Opt.ofEmptyAble(roleResourceList)
.map(rrList -> rrList.stream().map(RRoleResource::getResourceId).collect(Collectors.toList()))
.ifPresent(resourceIdList -> {
List<Resource> resourceList = resourceService.listByIds(resourceIdList);
List<String> permCodeList = resourceList.stream().map(Resource::getPerm).collect(Collectors.toList());
userVO.setPermCodeList(permCodeList);
});
setRolesAndPerms(id, userVO);
StpUtil.login(id);
String token = StpUtil.getTokenValue();
......@@ -285,7 +267,10 @@ public class DingMod {
User user = userService.lambdaQuery().select(User::getId, User::getUserid, User::getUsername, User::getPhone, User::getStatus).eq(User::getUserid, userid).one();
UserVO userVO = converter.convert(user, new UserVO());
StpUtil.login(userVO.getId());
Long id = userVO.getId();
setRolesAndPerms(id, userVO);
StpUtil.login(id);
String token = StpUtil.getTokenValue();
userVO.setToken(token);
......@@ -309,6 +294,27 @@ public class DingMod {
return "钉钉回调异常,请联系相关人员";
}
private void setRolesAndPerms(Long id, UserVO userVO) {
List<RUserRole> userRoleList = userRoleService.lambdaQuery().eq(RUserRole::getUserId, id).list();
List<RRoleResource> roleResourceList = Opt.ofEmptyAble(userRoleList)
.map(urList -> urList.stream().map(RUserRole::getRoleId).collect(Collectors.toList()))
.map(roleIdList -> {
// 获取用户关联的角色
List<Role> roles = roleService.listByIds(roleIdList);
List<RoleVO> roleVOS = converter.convert(roles, RoleVO.class);
userVO.setRoleVOList(roleVOS);
return roleResourceService.lambdaQuery().select(RRoleResource::getResourceId).in(RRoleResource::getRoleId, roleIdList).list();
}).orElse(ListUtil.empty());
// 获取角色关联的资源
Opt.ofEmptyAble(roleResourceList)
.map(rrList -> rrList.stream().map(RRoleResource::getResourceId).collect(Collectors.toList()))
.ifPresent(resourceIdList -> {
List<Resource> resourceList = resourceService.listByIds(resourceIdList);
List<String> permCodeList = resourceList.stream().map(Resource::getPerm).collect(Collectors.toList());
userVO.setPermCodeList(permCodeList);
});
}
/**
* 构建获取用户信息url
*/
......
package vion.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.springframework.stereotype.Component;
@Component
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResultVO<T> {
private Integer code;
private String msg;
......
......@@ -22,4 +22,6 @@ public class RoleVO {
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
private Long userId;
}
......@@ -13,7 +13,6 @@ public class UserVO {
private Long id;
private String userid;
private String username;
private String password;
private String phone;
private Long deptId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
......@@ -37,4 +36,6 @@ public class UserVO {
private List<String> permCodeList;
private List<RoleVO> roleVOList;
private String deptName;
}
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!