server/src/main/java/com/doumee/api/web/WebCategoryController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ package com.doumee.api.web; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.config.annotation.LoginRequired; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.vo.CategoryVO; import com.doumee.service.business.CategoryService; import com.doumee.service.business.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ServerWebExchange; import javax.annotation.Resource; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/4/8 9:31 */ @RestController @Api(tags ="è·åå类信æ¯") @RequestMapping("/web/category") public class WebCategoryController { @Resource private JwtTokenUtil jwtTokenUtil; @Resource private CategoryService categoryService; @LoginRequired @GetMapping("/categoryTree") @ApiOperation("è·åå类类å«è·ååç±»æ ") public ApiResponse<List<CategoryVO>> categoryVOTree(Integer categoryType, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange){ try { ServerHttpRequest request = serverWebExchange.getRequest(); jwtTokenUtil.getUserInfoByToken(token); return ApiResponse.success(categoryService.getCategoryVOTree(categoryType)); }catch (BusinessException e){ return ApiResponse.failed(e.getCode(),e.getMessage()); }catch (Exception e){ return ApiResponse.failed(ResponseStatus.SERVER_ERROR); } } @LoginRequired @GetMapping("/categoryList") @ApiOperation("è·åå类类å«è·ååç±»å表") public ApiResponse<List<CategoryVO>> categoryList(Integer categoryType, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange){ try { ServerHttpRequest request = serverWebExchange.getRequest(); jwtTokenUtil.getUserInfoByToken(token); return ApiResponse.success(categoryService.getCategoryVOList(categoryType)); }catch (BusinessException e){ return ApiResponse.failed(e.getCode(),e.getMessage()); }catch (Exception e){ return ApiResponse.failed(ResponseStatus.SERVER_ERROR); } } } server/src/main/java/com/doumee/api/web/WebMemberController.java
@@ -9,6 +9,8 @@ import com.doumee.core.model.ApiResponse; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.dto.LoginH5DTO; import com.doumee.dao.web.dto.UpdEmailDTO; import com.doumee.service.business.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -27,17 +29,19 @@ public class WebMemberController { @Resource private JwtTokenUtil jwtTokenUtil; @Resource private MemberService memberService; @PreventRepeat(limit = 10, lockTime = 10000) @ApiOperation("H5ä¸å¡ç»å½") @PostMapping("/loginH5") public ApiResponse<Member> loginH5 (@Validated @RequestBody LoginH5DTO dto, ServerWebExchange serverWebExchange) { try { ServerHttpRequest request = serverWebExchange.getRequest(); //---------TODO-----任康---åç¨æ·ç»å½é»è¾å¤ç-------start------- //æ¿CODEæ¢qwidï¼å æ¥ä¸æ¬ç³»ç»æ¯å¦åå¨ï¼åå¨ç´æ¥è¿åmemberï¼å¦åç¨qwidæ¥è¯¢ä¼ä¸ç¨æ·æ°æ®ï¼æå ¥æ°æ®åºï¼member) Member user = new Member(); //---------TODO--------åç¨æ·ç»å½é»è¾å¤ç-------end------- Member user = memberService.getUserInfo(dto); String token = jwtTokenUtil.generateToken(user); user.setToken(token); return ApiResponse.success(user); @@ -48,17 +52,17 @@ return ApiResponse.failed(ResponseStatus.SERVER_ERROR); } } @ApiOperation("æ´æ°ç¨æ·ä¿¡æ¯") @LoginRequired @ApiOperation("æ´æ°ç¨æ·é®ç®±ä¿¡æ¯") @PostMapping("/upateInfo") public ApiResponse<String> upateInfo (@Validated @RequestBody LoginH5DTO dto, ServerWebExchange serverWebExchange) { public ApiResponse upateInfo (@RequestBody UpdEmailDTO updEmailDTO ,@RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) { try { ServerHttpRequest request = serverWebExchange.getRequest(); //---------TODO-----任康---åç¨æ·ä¿¡æ¯æ´æ°ï¼é®ç®±ï¼å¤ç-------start------- Member user = new Member(); //---------TODO--------åç¨æ·ä¿¡æ¯æ´æ°ï¼é®ç®±ï¼å¤ç-------end------- String token = jwtTokenUtil.generateToken(user); return ApiResponse.success(token); Member user = jwtTokenUtil.getUserInfoByToken(token); updEmailDTO.setUserId(user.getId()); memberService.updEmail(updEmailDTO); return ApiResponse.success("æä½æå"); }catch (BusinessException e){ return ApiResponse.failed(e.getCode(),e.getMessage()); }catch (Exception e){ @@ -69,16 +73,14 @@ /** * å·æ°JWT令ç,ç¨æ§çä»¤çæ¢æ°ç令ç */ @LoginRequired @GetMapping("/getMemberInfo") @ApiOperation("è·åå½åç»éç¨æ·") @LoginRequired public ApiResponse<Member> getMemberInfo(@RequestHeader(JwtTokenUtil.HEADER_KEY) String token){ try { Member user =jwtTokenUtil.getUserInfoByToken(token); //---------TODO------任康--æ£æ¥ç¨æ·ä¿¡æ¯å½åæ¯å¦åæ³-------start------- //---------TODO--------æ£æ¥ç¨æ·ä¿¡æ¯å½åæ¯å¦åæ³-------end------- jwtTokenUtil.refreshToken(token);//æ¯æ¬¡æ´æ°tokenæææ Member user = jwtTokenUtil.getUserInfoByToken(token); user = memberService.checkUserValid(user); user.setToken(jwtTokenUtil.refreshToken(token));//æ¯æ¬¡æ´æ°tokenæææ if(user !=null){ return ApiResponse.success( user); } server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,88 @@ package com.doumee.api.web; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.config.annotation.LoginRequired; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.Workorder; import com.doumee.dao.web.dto.UpdEmailDTO; import com.doumee.service.business.ManagersService; import com.doumee.service.business.MemberService; import com.doumee.service.business.WorkorderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.java.Log; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ServerWebExchange; import javax.annotation.Resource; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/4/8 9:35 */ @RestController @Api(tags ="å·¥å䏿¥") @RequestMapping("/web/workOrder") public class WebWorkOrderController { @Resource private JwtTokenUtil jwtTokenUtil; @Resource private WorkorderService workorderService; @Resource private ManagersService managersService; @LoginRequired @ApiOperation("é£é©ä¸æ¥") @PostMapping("/create") public ApiResponse create (@RequestBody Workorder workorder, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) { try { ServerHttpRequest request = serverWebExchange.getRequest(); Member user = jwtTokenUtil.getUserInfoByToken(token); workorder.setMemberId(user.getId()); workorderService.create(workorder); return ApiResponse.success("æä½æå"); }catch (BusinessException e){ return ApiResponse.failed(e.getCode(),e.getMessage()); }catch (Exception e){ e.printStackTrace(); return ApiResponse.failed(ResponseStatus.SERVER_ERROR); } } @LoginRequired @ApiOperation("é£é©ä¸æ¥è¯¦æ ") @GetMapping("/detail") public ApiResponse<Workorder> detail (@RequestParam Integer id, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) { try { ServerHttpRequest request = serverWebExchange.getRequest(); return ApiResponse.success(workorderService.getDetail(id)); }catch (BusinessException e){ return ApiResponse.failed(e.getCode(),e.getMessage()); }catch (Exception e){ e.printStackTrace(); return ApiResponse.failed(ResponseStatus.SERVER_ERROR); } } } server/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
@@ -34,7 +34,6 @@ /** * çætoken令ç * * @param payloads 令ç䏿ºå¸¦çéå ä¿¡æ¯ * @return 令tokenç */ server/src/main/java/com/doumee/core/constants/Constants.java
@@ -26,8 +26,10 @@ public static final Integer ONE = 1; public static final Integer TWO = 2; public static final Integer ZERO = 0; public static final Integer THREE = 3; public static boolean DEALING_COMPANY_SYNC = false ; public static boolean DEALING_MEMBER_SYNC = false ; public static final String WORKORDER_FILE_PATH ="WORKORDER_FILE_PATH" ; public static final String REDIS_TOKEN_KEY = "token_"; /** server/src/main/java/com/doumee/dao/business/WorkorderMapper.java
@@ -2,11 +2,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.doumee.dao.business.model.Workorder; import com.github.yulichang.base.mapper.MPJJoinMapper; /** * @author æ±è¹è¹ * @since 2025/04/02 17:49 */ public interface WorkorderMapper extends BaseMapper<Workorder> { public interface WorkorderMapper extends MPJJoinMapper<Workorder> { } server/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -1,5 +1,6 @@ package com.doumee.dao.business.model; import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelExportColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -62,8 +63,8 @@ @ExcelExportColumn(name="ç±»å0å¾ç 1è§é¢ 2å ¶ä»") private Integer type; @ApiModelProperty(value = "å ³è对象类å 0SHE䏿¥ 1å®å ¨é£é©ä¸æ¥ 2å®å ¨é£é©å¤ç 3å®å ¨é£é©åé ç©ä¸ä¸»ç®¡ 4å®å ¨é£é©åé å¤ç人 5DCAé£é©ä¸æ¥ 6DCAé£é©å¤ç", example = "1") @ExcelExportColumn(name="å ³è对象类å 0SHE䏿¥ 1å®å ¨é£é©ä¸æ¥ 2å®å ¨é£é©å¤ç 3å®å ¨é£é©åé ç©ä¸ä¸»ç®¡ 4å®å ¨é£é©åé å¤ç人 5DCAé£é©ä¸æ¥ 6DCAé£é©å¤ç") @ApiModelProperty(value = "å ³è对象类å 0SHE䏿¥ 1è·ç»æ»ä¸æ¥ 2è·ç»æ»å¤ç 3è·ç»æ»åé ç©ä¸ä¸»ç®¡ 4è·ç»æ»åé å¤ç人 5DCAé£é©ä¸æ¥ 6DCAé£é©å¤ç", example = "1") @ExcelExportColumn(name="å ³è对象类å 0SHE䏿¥ 1è·ç»æ»ä¸æ¥ 2è·ç»æ»å¤ç 3è·ç»æ»åé ç©ä¸ä¸»ç®¡ 4è·ç»æ»åé å¤ç人 5DCAé£é©ä¸æ¥ 6DCAé£é©å¤ç") private Integer objType; @ApiModelProperty(value = "æä»¶å°å") @@ -78,4 +79,14 @@ @ExcelExportColumn(name="ä¼ä¸ç¼ç (å ³ècompany表ï¼") private Integer companyId; @ApiModelProperty(value = "æä»¶å°å") @TableField(exist = false) private String fileurlFull; @ApiModelProperty(value = "å ç½æä»¶å°å") @TableField(exist = false) private String localFileurlFull; } server/src/main/java/com/doumee/dao/business/model/Workorder.java
@@ -1,5 +1,6 @@ package com.doumee.dao.business.model; import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelExportColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -9,6 +10,7 @@ import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.util.List; /** * å·¥åä¿¡æ¯è¡¨ @@ -97,7 +99,7 @@ @ApiModelProperty(value = "æ¯å¦å¤é¨å°±å» 0å¦ 1æ¯") @ExcelExportColumn(name="æ¯å¦å¤é¨å°±å» 0å¦ 1æ¯") private String outJiuyi; private Integer outJiuyi; @ApiModelProperty(value = "æ¯å¦å»å¡å®¤ 0å¦ 1æ¯", example = "1") @ExcelExportColumn(name="æ¯å¦å»å¡å®¤ 0å¦ 1æ¯") @@ -113,7 +115,7 @@ @ApiModelProperty(value = "äºä»¶è¯´æ", example = "1") @ExcelExportColumn(name="äºä»¶è¯´æ") private Integer eventInfo; private String eventInfo; @ApiModelProperty(value = "é®ä»¶éç¥äººåç¼ç éå") @ExcelExportColumn(name="é®ä»¶éç¥äººåç¼ç éå") @@ -198,4 +200,38 @@ @ExcelExportColumn(name="DCAå·¥åæé人åä¼ä¸å¾®ä¿¡ç¼ç éå(å¤ä¸ªè±æéå·éå¼ï¼") private String dcaCsIds; @ApiModelProperty("éä»¶ä¿¡æ¯") @TableField(exist = false) private List<Multifile> multifileList; @ApiModelProperty("ææ¥äººååç§°") @TableField(exist = false) private String memberName; @ApiModelProperty("ææ¥äººåæå±é¨é¨") @TableField(exist = false) private String companyName; @ApiModelProperty("å伤类å«åç§°") @TableField(exist = false) private String hurtTypeName; @ApiModelProperty("åçå°ç¹åç§°") @TableField(exist = false) private String locationTypeName; @ApiModelProperty("é£é©ç±»ååç§°") @TableField(exist = false) private String typeName; @ApiModelProperty("DCAé®é¢åç§°") @TableField(exist = false) private String problemName; @ApiModelProperty("åäºåç§° å¤ä¸ª,åå²") @TableField(exist = false) private String colleague; } server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java
@@ -79,7 +79,7 @@ @ExcelExportColumn(name="æä½åå 容") private String afterContent; @ApiModelProperty(value = "åæ°1") @ApiModelProperty(value = "æä½äºº") @ExcelExportColumn(name="åæ°1") private String param1; server/src/main/java/com/doumee/dao/web/dto/UpdEmailDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.doumee.dao.web.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * @author Eva.Caesar Liu * @date 2023/05/04 18:21 */ @Data @ApiModel("æ´æ°é®ç®±") public class UpdEmailDTO implements Serializable { @ApiModelProperty(value = "é®ç®±ä¿¡æ¯") private String email; @ApiModelProperty(value = "ç¨æ·ä¸»é®",hidden = true) private Integer userId; } server/src/main/java/com/doumee/dao/web/vo/CategoryVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.doumee.dao.web.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/4/8 9:20 */ @Data public class CategoryVO { @ApiModelProperty(value = "å类主é®") private Integer id; @ApiModelProperty(value = "åç±»åç§°") private String name; @ApiModelProperty(value = "ç¶çº§å类主é®",hidden = true) private Integer parentId; @ApiModelProperty(value = "åç±»éå") private List<CategoryVO> childList; } server/src/main/java/com/doumee/dao/web/vo/CategoryVOTree.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ package com.doumee.dao.web.vo; import com.doumee.core.constants.Constants; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/4/8 9:19 */ public class CategoryVOTree { // ä¿ååä¸æå»ºæ å½¢çæææ°æ®ï¼éå¸¸æ°æ®åºæ¥è¯¢ç»æï¼ public List<CategoryVO> nodeList = new ArrayList<>(); /** * æé æ¹æ³ * @param nodeList å°æ°æ®éåèµå¼ç»nodeListï¼å³æææ°æ®ä½ä¸ºææèç¹ã */ public CategoryVOTree(List<CategoryVO> nodeList){ this.nodeList = nodeList; } /** * è·åéæå»ºçæææ ¹èç¹ï¼é¡¶çº§èç¹ï¼ "0" * @return æææ ¹èç¹Listéå */ public List<CategoryVO> getRootNode(){ // ä¿åæææ ¹èç¹ï¼æææ ¹èç¹çæ°æ®ï¼ List<CategoryVO> rootNodeList = new ArrayList<>(); // treeNodeï¼æ¥è¯¢åºçæ¯ä¸æ¡æ°æ®ï¼èç¹ï¼ for (CategoryVO treeNode : nodeList){ // 夿å½åèç¹æ¯å¦ä¸ºæ ¹èç¹ï¼æ¤å¤æ³¨æï¼è¥parentIdç±»åæ¯Stringï¼åè¦éç¨equals()æ¹æ³å¤æã if(Objects.isNull(treeNode.getParentId())){ rootNodeList.add(treeNode); } } return rootNodeList; } /** * æ ¹æ®æ¯ä¸ä¸ªé¡¶çº§èç¹ï¼æ ¹èç¹ï¼è¿è¡æå»ºæ å½¢ç»æ * @return æå»ºæ´æ£µæ */ public List<CategoryVO> buildTree(){ // treeNodesï¼ä¿åä¸ä¸ªé¡¶çº§èç¹ææå»ºåºæ¥ç宿´æ å½¢ List<CategoryVO> treeNodes = new ArrayList<CategoryVO>(); // getRootNode()ï¼è·åææçæ ¹èç¹ for (CategoryVO treeRootNode : getRootNode()) { // å°é¡¶çº§èç¹è¿è¡æå»ºåæ treeRootNode = buildChildTree(treeRootNode); // 宿ä¸ä¸ªé¡¶çº§èç¹ææå»ºçæ å½¢ï¼å¢å è¿æ¥ treeNodes.add(treeRootNode); } return treeNodes; } /** * éå½-----æå»ºåæ å½¢ç»æ * @param pNode æ ¹èç¹ï¼é¡¶çº§èç¹ï¼ * @return æ´æ£µæ */ public CategoryVO buildChildTree(CategoryVO pNode){ List<CategoryVO> childTree = new ArrayList<CategoryVO>(); // nodeListï¼ææèç¹éåï¼æææ°æ®ï¼ for (CategoryVO treeNode : nodeList) { // 夿å½åèç¹çç¶èç¹IDæ¯å¦çäºæ ¹èç¹çIDï¼å³å½åèç¹ä¸ºå ¶ä¸çåèç¹ if (!Objects.isNull(treeNode.getParentId())&& Constants.equalsInteger(treeNode.getParentId(),pNode.getId())) { // åéå½è¿è¡å¤æå½åèç¹çæ åµï¼è°ç¨èªèº«æ¹æ³ childTree.add(buildChildTree(treeNode)); } } // for循ç¯ç»æï¼å³èç¹ä¸æ²¡æä»»ä½èç¹ï¼æ å½¢æå»ºç»æï¼è®¾ç½®æ ç»æ pNode.setChildList(childTree); return pNode; } } server/src/main/java/com/doumee/service/business/CategoryService.java
@@ -3,6 +3,8 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Category; import com.doumee.dao.web.vo.CategoryVO; import java.util.List; /** @@ -95,5 +97,14 @@ */ long count(Category category); /** * è·ååç±»æ * @param categoryType * @return */ List<CategoryVO> getCategoryVOTree(Integer categoryType); List<CategoryVO> getCategoryVOList(Integer categoryType); List<Category> treeList(Category param ); } server/src/main/java/com/doumee/service/business/MemberService.java
@@ -3,6 +3,9 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.dto.LoginH5DTO; import com.doumee.dao.web.dto.UpdEmailDTO; import java.util.List; /** @@ -96,4 +99,11 @@ long count(Member member); void syncQwAll(); Member getUserInfo(LoginH5DTO dto); void updEmail(UpdEmailDTO updEmailDTO); Member checkUserValid(Member member); } server/src/main/java/com/doumee/service/business/WorkorderService.java
@@ -94,4 +94,12 @@ * @return long */ long count(Workorder workorder); /** * è·å详æ 详ç»ä¿¡æ¯ * @param id * @return */ Workorder getDetail(Integer id); } server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -1,6 +1,7 @@ package com.doumee.service.business.impl; import com.doumee.core.constants.Constants; import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; @@ -9,6 +10,9 @@ import com.doumee.core.utils.Utils; import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.model.Category; import com.doumee.dao.business.vo.CompanyTree; import com.doumee.dao.web.vo.CategoryVO; import com.doumee.dao.web.vo.CategoryVOTree; import com.doumee.dao.business.model.Company; import com.doumee.dao.business.model.Managers; import com.doumee.dao.business.vo.CategoryTree; @@ -26,8 +30,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.UUID; /** @@ -256,4 +262,54 @@ return companyList; } @Override public List<CategoryVO> getCategoryVOTree(Integer categoryType){ List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() .eq(Category::getIsdeleted, Constants.ZERO) .eq(Objects.nonNull(categoryType),Category::getType,categoryType) .orderByAsc(Category::getSortnum,Category::getId) ); List<CategoryVO> categoryVOList = new ArrayList<>(); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)){ for (Category category:categoryList) { CategoryVO categoryVO = new CategoryVO(); categoryVO.setId(category.getId()); categoryVO.setName(category.getName()); categoryVO.setParentId(category.getParentId()); categoryVOList.add(categoryVO); } CategoryVOTree treeBuild = new CategoryVOTree(categoryVOList); categoryVOList = treeBuild.buildTree(); } return categoryVOList; } @Override public List<CategoryVO> getCategoryVOList(Integer categoryType){ List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() .eq(Category::getIsdeleted, Constants.ZERO) .eq(Objects.nonNull(categoryType),Category::getType,categoryType) .orderByAsc(Category::getSortnum,Category::getId) ); List<CategoryVO> categoryVOList = new ArrayList<>(); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)){ for (Category category:categoryList) { CategoryVO categoryVO = new CategoryVO(); categoryVO.setId(category.getId()); categoryVO.setName(category.getName()); categoryVO.setParentId(category.getParentId()); categoryVOList.add(categoryVO); } } return categoryVOList; } } server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -10,10 +10,7 @@ import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.core.utils.qiyeweixin.QywxUtil; import com.doumee.core.utils.qiyeweixin.model.response.QywxDepartInfoResponse; import com.doumee.core.utils.qiyeweixin.model.response.QywxUserAttrInfoResponse; import com.doumee.core.utils.qiyeweixin.model.response.QywxUserExtAttrResponse; import com.doumee.core.utils.qiyeweixin.model.response.QywxUserListResponse; import com.doumee.core.utils.qiyeweixin.model.response.*; import com.doumee.dao.business.CompanyMapper; import com.doumee.dao.business.CompanyMemberMapper; import com.doumee.dao.business.MemberMapper; @@ -21,6 +18,8 @@ import com.doumee.dao.business.model.CompanyMember; import com.doumee.dao.business.model.Member; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.web.dto.LoginH5DTO; import com.doumee.dao.web.dto.UpdEmailDTO; import com.doumee.service.business.MemberService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -39,6 +38,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; /** * 人åä¿¡æ¯è¡¨Serviceå®ç° @@ -402,4 +402,80 @@ return null; } @Override public Member getUserInfo(LoginH5DTO dto){ if(Objects.isNull(dto)|| StringUtils.isBlank(dto.getCode())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } String token = systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(); //æ ¹æ®codeæ¢åºä¼ä¸å¾®ä¿¡ID QywxBaseResponse<String> qwIdBaseResponse= QywxUtil.getUserInfoByCode(token,dto.getCode()); if(Objects.isNull(qwIdBaseResponse)||Objects.isNull(qwIdBaseResponse.getErrcode())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¼ä¸å¾®ä¿¡ç»å½ç è§£æå¤±è´¥ï¼è¯·è系管çå"); } if(Constants.equalsInteger(qwIdBaseResponse.getErrcode(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¼ä¸å¾®ä¿¡ç»å½å¤±è´¥ï¼"+qwIdBaseResponse.getErrmsg()); } if(Objects.isNull(qwIdBaseResponse.getData())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¼ä¸å¾®ä¿¡ç¨æ·ä¿¡æ¯è§£æå¤±è´¥ï¼è¯·è系管çå"); } String qwId = qwIdBaseResponse.getData(); Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getQwId,qwId).eq(Member::getIsdeleted,Constants.ZERO).last(" limit 1 ")); if(Objects.isNull(member)){ //æ ¹æ®ä¼ä¸å¾®ä¿¡ID æ¥è¯¢ç¨æ·ä¿¡æ¯ QywxUserInfoResponse qywxUserInfoResponse = QywxUtil.getUserInfo(token,qwId); if(Objects.isNull(qywxUserInfoResponse)||Objects.isNull(qywxUserInfoResponse.getErrcode())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¼ä¸å¾®ä¿¡è·åç¨æ·ä¿¡æ¯è§£æå¤±è´¥ï¼è¯·è系管çå"); } if(Constants.equalsInteger(qywxUserInfoResponse.getErrcode(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¼ä¸å¾®ä¿¡è·åç¨æ·ä¿¡æ¯å¤±è´¥ï¼"+qwIdBaseResponse.getErrmsg()); } member = new Member(); member.setCreateDate(new Date()); member.setStatus(Constants.ZERO); member.setIsdeleted(Constants.ZERO); member.setName(StringUtils.isNotBlank(qywxUserInfoResponse.getName())?qywxUserInfoResponse.getName():null); member.setImgurl(StringUtils.isNotBlank(qywxUserInfoResponse.getAvatar())?qywxUserInfoResponse.getAvatar():null); member.setPhone(StringUtils.isNotBlank(qywxUserInfoResponse.getMobile())?qywxUserInfoResponse.getMobile():null); member.setQwId(qwId); memberMapper.insert(member); } return member; } @Override public void updEmail(UpdEmailDTO updEmailDTO){ if(Objects.isNull(updEmailDTO) || StringUtils.isBlank(updEmailDTO.getEmail()) || Objects.isNull(updEmailDTO.getUserId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } Member member = memberMapper.selectById(updEmailDTO.getUserId()); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"ç¨æ·ä¿¡æ¯å¼å¸¸"); } memberMapper.update(null,new UpdateWrapper<Member>().lambda().set(Member::getEmail,updEmailDTO.getEmail()).eq(Member::getId,member.getId())); } @Override public Member checkUserValid(Member member){ if(Objects.isNull(member)||Objects.isNull(member.getId())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªæ¥è¯¢å°ææç¨æ·ä¿¡æ¯"); } Member dbMember = memberMapper.selectById(member.getId()); if(Objects.isNull(dbMember)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åç»å½ç¨æ·å·²æ³¨é"); } if(!Constants.equalsInteger(dbMember.getIsdeleted(),Constants.ZERO)||!Constants.equalsInteger(dbMember.getStatus(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åç»å½ç¨æ·å·²ç¦ç¨"); } return dbMember; } } server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -1,20 +1,32 @@ package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.dao.business.WorkorderMapper; import com.doumee.dao.business.model.Workorder; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.service.business.WorkorderService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.catalina.Manager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * å·¥åä¿¡æ¯è¡¨Serviceå®ç° @@ -27,11 +39,172 @@ @Autowired private WorkorderMapper workorderMapper; @Autowired private MultifileMapper multifileMapper; @Autowired private WorkorderLogMapper workorderLogMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private MemberMapper memberMapper; @Autowired private ManagersMapper managersMapper; @Override public Integer create(Workorder workorder) { this.isValidBaseParam(workorder); workorder.setCreateDate(new Date()); workorder.setEditDate(new Date()); workorder.setMemberId(workorder.getMemberId()); workorder.setIsdeleted(Constants.ZERO); workorder.setStatus(Constants.ZERO); //è·ç»æ»äºä»¶ä¸æ¥ æ¥è¯¢SHEè´è´£äºº if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){ List<Managers> managersList = managersMapper.selectList(new QueryWrapper<Managers>().lambda().eq(Managers::getIsdeleted,Constants.ZERO) .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(managersList)){ workorder.setQwnoticeMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(","))); } } workorderMapper.insert(workorder); //åå¨éä»¶ä¿¡æ¯ List<Multifile> multifileList = workorder.getMultifileList(); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ for (Multifile multifile:multifileList) { multifile.setObjId(workorder.getId()); multifile.setCreateDate(new Date()); //TODO åç»æ´çå¤ç if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){//SHEäºä»¶ä¸æ¥å¾ç multifile.setObjType(Constants.ZERO); }else if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){//è·ç»æ»äºä»¶ä¸æ¥å¾ç multifile.setObjType(Constants.ONE); } } multifileMapper.insert(multifileList); } //å¤ç䏿¥æ¥å¿ this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId()); return workorder.getId(); } /** * * @param beforeJson * @param afterWorkorder * @param objType æä½ç±»å 0ä»»å¡ä¸æ¥ 1ä»»å¡ç¡®è®¤ 2ä»»å¡åé ç©ä¸ä¸»ç®¡ 3ä»»å¡å ³é 4ä»»å¡åé å¤ç人 5ä»»å¡å¬ä¿ * @param memberId */ public void saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId){ WorkorderLog workorderLog = new WorkorderLog(); workorderLog.setCreateDate(new Date()); workorderLog.setEditDate(new Date()); workorderLog.setIsdeleted(Constants.ZERO); workorderLog.setBeforeContent(beforeJson); workorderLog.setAfterContent(JSONObject.toJSONString(afterWorkorder)); workorderLog.setParam1(memberId.toString()); workorderLog.setObjId(afterWorkorder.getId().toString()); workorderLog.setObjType(objType); workorderLogMapper.insert(workorderLog); } /** * æ°æ®æ ¡éª * @param workorder */ public void isValidBaseParam(Workorder workorder){ if(Objects.isNull(workorder) || Objects.isNull(workorder.getSubmitDate()) || Objects.isNull(workorder.getHappenTime()) || Objects.isNull(workorder.getType()) || !( Constants.equalsInteger(workorder.getType(),Constants.ZERO) || Constants.equalsInteger(workorder.getType(),Constants.ONE) || Constants.equalsInteger(workorder.getType(),Constants.TWO) || Constants.equalsInteger(workorder.getType(),Constants.THREE) )){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //SHE äºä»¶ä¸æ¥ if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ if(Objects.isNull(workorder.getMemberType()) || Objects.isNull(workorder.getLocaltionId()) || Objects.isNull(workorder.getOutJiuyi()) || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Objects.isNull(workorder.getIsYiwushi())) || (Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted())) || Objects.isNull(workorder.getCategoryId()) || Objects.isNull(workorder.getWorkRelated()) || (Constants.equalsInteger(workorder.getMemberType(),Constants.TWO) && StringUtils.isEmpty(workorder.getMemberNames())) || (Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO) && StringUtils.isEmpty(workorder.getMemberQwids())) || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } //è·ç»æ» äºä»¶ä¸æ¥ if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){ if(Objects.isNull(workorder.getTypeId()) || Objects.isNull(workorder.getLocaltionId()) || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } } @Override public Workorder getDetail(Integer id){ Workorder workorder = workorderMapper.selectJoinOne(Workorder.class, new MPJLambdaWrapper<Workorder>() .selectAll(Workorder.class) .selectAs(Member::getName,Workorder::getMemberName) .selectAs(Company::getNamePath,Workorder::getCompanyName) .select(" c1.name ",Workorder::getHurtTypeName) .select(" c2.name ",Workorder::getLocationTypeName) .select(" c3.name ",Workorder::getTypeName) .select(" c4.name ",Workorder::getProblemName) .leftJoin(Member.class,Member::getId,Workorder::getMemberId) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .leftJoin(" category c1 on t.CATEGORY_ID = c1.id ") //åä¼¤ç±»å« .leftJoin(" category c2 on t.LOCALTION_ID = c2.id ") //åçå°ç¹ .leftJoin(" category c3 on t.TYPE_ID = c3.id ") //é£é©ç±»å .leftJoin(" category c4 on t.PROBLEM_ID = c4.id ") //DCAé®é¢ç¼ç .eq(Workorder::getId,id) .last(" limit 1 ") ); if(Objects.nonNull(workorder)){ //妿æ¯SHEäºä»¶ä¸æ¥ SHEæ¶å人åç±»å为åäºä¿¡æ¯ éè¦æ¥è¯¢åäºåç§° if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)&&Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)){ List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getQwId, Arrays.asList(workorder.getMemberQwids().split(",")))); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){ workorder.setColleague(memberList.stream().map(i->i.getName()).collect(Collectors.joining(","))); } } //æ¥è¯¢éä»¶ä¿¡æ¯ List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjId,workorder).orderByAsc(Multifile::getId)); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_FILE_PATH).getCode(); for (Multifile multifile:multifileList) { multifile.setFileurlFull(path+multifile.getFileurl()); } workorder.setMultifileList(multifileList); } } return workorder; } @Override public void deleteById(Integer id) { @@ -154,4 +327,15 @@ QueryWrapper<Workorder> wrapper = new QueryWrapper<>(workorder); return workorderMapper.selectCount(wrapper); } }