Bläddra i källkod

Merge branch 'develop' of http://132.232.206.88:3000/lift-manager/lift-server into wanghaicheng

 Conflicts:
	lift-upload/src/main/java/com/controller/common/ExceptionInfo.java
wang-hai-cheng 5 år sedan
förälder
incheckning
1a67cd0eed
15 ändrade filer med 209 tillägg och 84 borttagningar
  1. 19 12
      lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/controller/EmergencyRepairController.java
  2. 1 1
      lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/service/EmergencyRepairService.java
  3. 45 16
      lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/BigDecimalDeserializer.java
  4. 43 4
      lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/BigDecimalSerializer.java
  5. 4 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/SystemConfiguration.java
  6. 7 7
      lift-common/src/main/java/cn.com.ty.lift.common/constants/ApiConstants.java
  7. 6 0
      lift-push/src/main/java/cn/com/ty/lift/push/app/PushConsumer.java
  8. 6 0
      lift-push/src/main/java/cn/com/ty/lift/push/app/PushProducer.java
  9. 45 7
      lift-push/src/main/java/cn/com/ty/lift/push/app/XingePush.java
  10. 5 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/dto/request/PlatformCalendarRequest.java
  11. 14 6
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/service/PlatformCalendarService.java
  12. 2 1
      lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java
  13. 9 6
      lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/RoleService.java
  14. 0 23
      lift-upload/src/main/java/com/controller/common/ExceptionInfo.java
  15. 3 1
      lift-upload/src/main/java/com/controller/common/RestResponse.java

+ 19 - 12
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/controller/EmergencyRepairController.java

@@ -176,7 +176,7 @@ public class EmergencyRepairController {
         Validate.notTrue(repairing > 0, ValuePool.EMERGENCY_HAVE_REPAIRING);
         PlatformCompanyLiftRelevance relevance = platformCompanyLiftRelevanceService.findByMtCompanyAndLift(entity.getMtCompanyId(), entity.getLiftId());
         if (Objects.nonNull(relevance)) {
-            Validate.notTrue(relevance.getLiftCompanyStatus().equals(CommonEnum.LiftStatus.ANNUAL_INSPECTION.getCode()), ValuePool.EMERGENCY_LIFT_IS_IN_INSPECTION);
+            Validate.notTrue(CommonEnum.LiftStatus.ANNUAL_INSPECTION.getCode().equals(relevance.getLiftCompanyStatus()), ValuePool.EMERGENCY_LIFT_IS_IN_INSPECTION);
         }
 
         //派单时间 急修单创建时间
@@ -185,6 +185,7 @@ public class EmergencyRepairController {
         entity.setStatus(0);
         boolean result = emergencyRepairService.save(entity);
         if (result) {
+            //消息推送
             Long id = entity.getId();
             Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
             List<Long> userIds = new ArrayList<>();
@@ -251,6 +252,11 @@ public class EmergencyRepairController {
         return pageByCondition(request);
     }
 
+    /**
+     * 急修收款中急修列表,不检查status
+     * @param request RepairRequest
+     * @return RestResponse
+     */
     @PostMapping("pageCost")
     @Validation(fields = {"mtCompanyId"})
     public RestResponse pageCost(@Val @RequestBody RepairRequest request) {
@@ -290,6 +296,7 @@ public class EmergencyRepairController {
 
         boolean result = emergencyRepairService.saveOrUpdate(entity);
         if (result) {
+            //消息推送
             Long id = entity.getId();
             Long mtCompanyId = entity.getMtCompanyId();
             Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
@@ -460,15 +467,17 @@ public class EmergencyRepairController {
         EmergencyRepair repair = emergencyRepairService.getById(request.getId());
         Validate.notNull(repair, ValuePool.EMERGENCY_NOT_EXIST);
 
+        List<ErRecordCost> costs = erRecordCostService.listByErRecordId(repair.getId());
         List<ErRecordCost> erRecordCosts = request.getErRecordCosts();
-
-        BigDecimal costTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getCostMoney())).map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        if(Objects.isNull(costs)){
+            costs = new ArrayList<>();
+        }
+        costs.addAll(erRecordCosts);
+        BigDecimal costTotal = costs.stream().filter(cost -> Objects.nonNull(cost.getCostMoney())).map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setCostTotal(costTotal);
-
-        BigDecimal payTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getPayMoney())).map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal payTotal = costs.stream().filter(cost -> Objects.nonNull(cost.getPayMoney())).map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setPayTotal(payTotal);
-
-        BigDecimal invoiceTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getInvoiceMoney())).map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal invoiceTotal = costs.stream().filter(cost -> Objects.nonNull(cost.getInvoiceMoney())).map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setInvoiceTotal(invoiceTotal);
 
         return emergencyRepairService.addCost(repair, erRecordCosts);
@@ -526,21 +535,19 @@ public class EmergencyRepairController {
     @PostMapping("modifyCost")
     @Validation(fields = {"id", "erRecordCosts"})
     public RestResponse modifyCost(@Val @RequestBody RepairRequest request) {
-        EmergencyRepair repair = emergencyRepairService.getById(request.getId());
+        Long recordId = request.getId();
+        EmergencyRepair repair = emergencyRepairService.getById(recordId);
         Validate.notNull(repair, ValuePool.EMERGENCY_NOT_EXIST);
 
         List<ErRecordCost> erRecordCosts = request.getErRecordCosts();
-
         BigDecimal costTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getCostMoney())).map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setCostTotal(costTotal);
-
         BigDecimal payTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getPayMoney())).map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setPayTotal(payTotal);
-
         BigDecimal invoiceTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getInvoiceMoney())).map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
         repair.setInvoiceTotal(invoiceTotal);
 
-        List<ErRecordCost> oldRecordCosts = erRecordCostService.listByErRecordId(request.getId());
+        List<ErRecordCost> oldRecordCosts = erRecordCostService.listByErRecordId(recordId);
 
         return emergencyRepairService.modifyCost(repair, oldRecordCosts, erRecordCosts);
     }

+ 1 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/service/EmergencyRepairService.java

@@ -281,7 +281,7 @@ public class EmergencyRepairService extends ServiceImpl<EmergencyRepairMapper, E
         if (!re) {
             return RestResponse.fail("修改急修失败,请稍后重试");
         }
-        boolean im = erRecordImgService.saveBatch(erRecordImgs);
+        boolean im = erRecordImgService.saveBatch(erRecordImgs, erRecordImgs.size());
         if (im) {
             return RestResponse.success(true);
         } else {

+ 45 - 16
lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/BigDecimalDeserializer.java

@@ -1,11 +1,13 @@
 package cn.com.ty.lift.business.framework.conf;
 
-import com.alibaba.fastjson.parser.DefaultJSONParser;
-import com.alibaba.fastjson.parser.JSONLexer;
-import com.alibaba.fastjson.parser.JSONToken;
-import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.JsonTokenId;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
+import lombok.extern.slf4j.Slf4j;
 
-import java.lang.reflect.Type;
+import java.io.IOException;
 import java.math.BigDecimal;
 
 /**
@@ -14,19 +16,46 @@ import java.math.BigDecimal;
  * @author wcz
  * @since 2020/4/26
  */
-public class BigDecimalDeserializer implements ObjectDeserializer {
-    @Override
-    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
-        final JSONLexer lexer = parser.lexer;
-        if(type != BigDecimal.class){
-            return (T) lexer.numberString();
-        }
-        BigDecimal bigDecimal = lexer.decimalValue();
-        return (T) bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+@Slf4j
+public class BigDecimalDeserializer extends StdScalarDeserializer<BigDecimal> {
+
+    public static final BigDecimalDeserializer instance = new BigDecimalDeserializer();
+
+    public BigDecimalDeserializer() {
+        super(BigDecimal.class);
     }
 
     @Override
-    public int getFastMatchToken() {
-        return JSONToken.LITERAL_INT;
+    public BigDecimal deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
+        BigDecimal value;
+        switch (parser.getCurrentTokenId()) {
+            case JsonTokenId.ID_NUMBER_INT:
+            case JsonTokenId.ID_NUMBER_FLOAT:
+                value = parser.getDecimalValue();
+                break;
+            case JsonTokenId.ID_STRING:
+                String text = parser.getText().trim();
+                // note: no need to call `coerce` as this is never primitive
+                if (_isEmptyOrTextualNull(text)) {
+                    _verifyNullForScalarCoercion(context, text);
+                    value = getNullValue(context);
+                    break;
+                }
+                _verifyStringForScalarCoercion(context, text);
+                try {
+                    value = new BigDecimal(text);
+                    break;
+                } catch (IllegalArgumentException ignore) {
+                }
+                value = ((BigDecimal) context.handleWeirdStringValue(_valueClass, text, "not a valid representation"));
+                break;
+            case JsonTokenId.ID_START_ARRAY:
+                value = _deserializeFromArray(parser, context);
+                break;
+            default:
+                // Otherwise, no can do:
+                value = ((BigDecimal) context.handleUnexpectedToken(_valueClass, parser));
+        }
+        return value.setScale(2, BigDecimal.ROUND_HALF_UP);
     }
 }

+ 43 - 4
lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/BigDecimalSerializer.java

@@ -1,10 +1,16 @@
 package cn.com.ty.lift.business.framework.conf;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
+import com.fasterxml.jackson.databind.ser.ContextualSerializer;
+import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 
 import java.io.IOException;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.util.Objects;
 
@@ -14,11 +20,44 @@ import java.util.Objects;
  * @author wcz
  * @since 2020/4/26
  */
-public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
+public class BigDecimalSerializer extends StdScalarSerializer<BigDecimal> implements ContextualSerializer {
+
+    public static final BigDecimalSerializer instance = new BigDecimalSerializer();
+
+    public BigDecimalSerializer() {
+        super(BigDecimal.class);
+    }
+
+    @Override
+    public JsonSerializer<?> createContextual(SerializerProvider prov,
+                                              BeanProperty property) throws JsonMappingException {
+        JsonFormat.Value format = findFormatOverrides(prov, property, handledType());
+        if (format != null) {
+            switch (format.getShape()) {
+                case STRING:
+                    return ToStringSerializer.instance;
+                default:
+            }
+        }
+        return this;
+    }
+
     @Override
-    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
         if(Objects.nonNull(value)){
             gen.writeNumber(value.setScale(2, BigDecimal.ROUND_HALF_UP));
+        } else {
+            gen.writeNumber(value);
         }
     }
+
+    @Override
+    public JsonNode getSchema(SerializerProvider provider, Type typeHint) {
+        return createSchemaNode("number", true);
+    }
+
+    @Override
+    public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) throws JsonMappingException {
+        visitFloatFormat(visitor, typeHint, JsonParser.NumberType.BIG_DECIMAL);
+    }
 }

+ 4 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/framework/conf/SystemConfiguration.java

@@ -37,6 +37,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.PostConstruct;
+import java.math.BigDecimal;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
@@ -97,6 +98,9 @@ public class SystemConfiguration {
             builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
 
             builder.serializerByType(Long.class, ToStringSerializer.instance);
+
+            builder.serializerByType(BigDecimal.class, BigDecimalSerializer.instance);
+            builder.deserializerByType(BigDecimal.class, BigDecimalDeserializer.instance);
         };
     }
 

+ 7 - 7
lift-common/src/main/java/cn.com.ty.lift.common/constants/ApiConstants.java

@@ -67,24 +67,24 @@ public class ApiConstants {
     public static final String CURRENT_USER_TYPE = "currentUserType";
 
     /**
-     *  访问类型 app端访问
+     *  访问类型 pc端访问
      */
-    public static final int ACCESS_TYPE_PC = 1;
+    public static final int ACCESS_TYPE_PC = 0;
 
     /**
      *  访问类型 app端访问
      */
-    public static final int ACCESS_TYPE_APP = 2;
+    public static final int ACCESS_TYPE_APP = 1;
 
     /**
-     *  访问类型 app端访问
+     *  访问类型 公众号端访问
      */
-    public static final int ACCESS_TYPE_PUBLIC = 3;
+    public static final int ACCESS_TYPE_PUBLIC = 2;
 
     /**
-     *  访问类型 app端访问
+     *  访问类型 小程序端访问
      */
-    public static final int ACCESS_TYPE_APPLETS = 4;
+    public static final int ACCESS_TYPE_APPLETS = 3;
 
     /**
      * 已删除

+ 6 - 0
lift-push/src/main/java/cn/com/ty/lift/push/app/PushConsumer.java

@@ -12,6 +12,12 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 消息推送消费者,监听队列,从队列中取出message执行推送, queue >>> device platform
+ *
+ * @author wcz
+ * @since 2020/4/26
+ */
 @Slf4j
 @Component
 @AllArgsConstructor

+ 6 - 0
lift-push/src/main/java/cn/com/ty/lift/push/app/PushProducer.java

@@ -9,6 +9,12 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDateTime;
 
+/**
+ * 推送消息生产者demo,在具体业务发生点send消息到队列中, message >>> queue
+ *
+ * @author wcz
+ * @since 2020/4/26
+ */
 @RestController
 @AllArgsConstructor
 @RequestMapping("push")

+ 45 - 7
lift-push/src/main/java/cn/com/ty/lift/push/app/XingePush.java

@@ -1,5 +1,6 @@
 package cn.com.ty.lift.push.app;
 
+import cn.com.ty.lift.common.utils.ValuePool;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.tencent.xinge.XingeApp;
@@ -25,39 +26,76 @@ public class XingePush {
     private String appId     = "40d4e2e854433";
     private String secretKey = "fa99dc19157b00fc71cf8d7e840273a3";
 
-    //消息推送(>>>)
+    /**
+     * 消息推送 >>>
+     */
     private XingeApp xingeApp;
 
+    /**
+     * 默认配置创建xinge push
+     */
     public XingePush() {
         xingeApp = new XingeApp(appId, secretKey);
     }
 
+    /**
+     * 指定api密钥创建xinge push
+     */
     public XingePush(String appId, String secretKey) {
         this.appId = appId;
         this.secretKey = secretKey;
         xingeApp = new XingeApp(appId, secretKey);
     }
 
+    /**
+     * 推送到android指定的token设备
+     * @param title 消息标题
+     * @param content 消息正文
+     * @param toList 推送的token
+     */
     public boolean pushTokenOnAndroid(String title, String content, List<String> toList) {
         return pushMessage(RequestBuilder.android(title, content, AudienceType.token.getType(), toList));
     }
-
+    /**
+     * 推送到android指定的account设备
+     * @param title 消息标题
+     * @param content 消息正文
+     * @param toList 推送的account
+     */
     public boolean pushAccountOnAndroid(String title, String content, List<String> toList) {
         return pushMessage(RequestBuilder.android(title, content, AudienceType.account.getType(), toList));
     }
-
+    /**
+     * 推送到android的所有设备
+     * @param title 消息标题
+     * @param content 消息正文
+     */
     public boolean pushAllOnAndroid(String title, String content) {
         return pushMessage(RequestBuilder.android(title, content));
     }
-
+    /**
+     * 推送到ios指定的token设备
+     * @param title 消息标题
+     * @param content 消息正文
+     * @param toList 推送的token
+     */
     public boolean pushTokenOnIos(String title, String content, List<String> toList) {
         return pushMessage(RequestBuilder.ios(title, content, AudienceType.token.getType(), toList));
     }
-
+    /**
+     * 推送到android指定的account设备
+     * @param title 消息标题
+     * @param content 消息正文
+     * @param toList 推送的account
+     */
     public boolean pushAccountOnIos(String title, String content, List<String> toList) {
         return pushMessage(RequestBuilder.ios(title, content, AudienceType.account.getType(), toList));
     }
-
+    /**
+     * 推送到ios指定的token设备
+     * @param title 消息标题
+     * @param content 消息正文
+     */
     public boolean pushAllOnIos(String title, String content) {
         return pushMessage(RequestBuilder.ios(title, content));
     }
@@ -272,7 +310,7 @@ public class XingePush {
                     log.error("Failed to Create PushAppRequest: 'toList' is null or empty when 'audienceType' is not 'ALL'.");
                     return null;
                 }
-                if(toList.size() > 1000){
+                if(toList.size() > ValuePool.PUSH_MAX_SIZE){
                     log.error("Failed to Create PushAppRequest: the max size of 'toList' is 1000.");
                     return null;
                 }

+ 5 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/dto/request/PlatformCalendarRequest.java

@@ -35,6 +35,11 @@ public class PlatformCalendarRequest {
      */
     private String monthEndStr;
 
+    /**
+     * 电梯状态
+     */
+    private Integer calendarLiftStatus;
+
     public String getRequestDateStr(){
         if(StringUtils.isNotBlank(requestDateStr)) {
             return requestDateStr + "-01";

+ 14 - 6
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/service/PlatformCalendarService.java

@@ -46,7 +46,7 @@ public class PlatformCalendarService {
                 dayToCalendarLiftMap.forEach((status, calendarLiftList) -> {
                     if (calendarLiftList != null) {
                         if (status != 0) {
-                            statusToLiftNum.put(status, calendarLiftList.stream().count());
+                            statusToLiftNum.put(status, (long) calendarLiftList.size());
                         }
                     }
                 });
@@ -72,11 +72,19 @@ public class PlatformCalendarService {
         Map<Integer, List<CalendarLiftDataModel>> statusToLiftData = dayToCalendarLift.get(CommonUtil.getDateStrDayValue(
                 platformCalendarRequest.getRequestDateDayStr(), CommonConstants.PlatformCalendarConstants.TRANS_DATE_FORMAT));
         if (statusToLiftData != null && statusToLiftData.size() > 0) {
-            statusToLiftData.forEach((status, calendarLiftList) -> {
-                if(status != 0) {
-                    calendarLiftDataModelList.addAll(calendarLiftList);
-                }
-            });
+            if (platformCalendarRequest.getCalendarLiftStatus() == null) {
+                //如果不传类型就获取所有状态的电梯数据
+                List<CalendarLiftDataModel> finalCalendarLiftDataModelList = calendarLiftDataModelList;
+                statusToLiftData.forEach((status, calendarLiftList) -> {
+                    if (status != 0) {
+                        finalCalendarLiftDataModelList.addAll(calendarLiftList);
+                    }
+                });
+                calendarLiftDataModelList = finalCalendarLiftDataModelList;
+            } else {
+                //传类型就获取指定状态的电梯数据
+                calendarLiftDataModelList = statusToLiftData.get(platformCalendarRequest.getCalendarLiftStatus());
+            }
         }
         //去除id相同的电梯数据
         removeDuplicationLift(calendarLiftDataModelList);

+ 2 - 1
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -113,7 +113,8 @@ public class LoginService implements ILoginService {
             return RestResponse.fail(ApiConstants.RESULT_ERROR, "手机号尚未注册");
         }
         //判断用户是否为物管端用户
-        if (ApiConstants.UserConstants.PUBLIC_TYPE_USER == userAccount.getType()) {
+        int userType = userAccount.getType() != null ? userAccount.getType() : ApiConstants.UserConstants.TYPE_USER;
+        if (ApiConstants.UserConstants.PUBLIC_TYPE_USER == userType) {
             //物管端用户,查看登录端
             if (ApiConstants.ACCESS_TYPE_APPLETS == userRequest.getMobileType()
                     || ApiConstants.ACCESS_TYPE_PC == userRequest.getMobileType()) {

+ 9 - 6
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/RoleService.java

@@ -101,15 +101,18 @@ public class RoleService extends ServiceImpl<RoleMapper, Role> implements IRoleS
         if (roleMapper.updateById(role) == 0) {
             return RestResponse.fail(ApiConstants.RESULT_ERROR, "更新角色信息失败");
         }
-        //删除角色原来关联的菜单信息
-        if (roleMenuService.deleteRoleMenu(role.getId()) == 0) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return RestResponse.fail(ApiConstants.RESULT_ERROR, "更新角色信息失败");
+        int roleMenuCount = roleMenuService.count(new QueryWrapper<RoleMenu>().eq("role_id", role.getId()));
+        if (roleMenuCount > 0) {
+            //删除角色原来关联的菜单信息
+            if (roleMenuService.deleteRoleMenu(role.getId()) == 0) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return RestResponse.fail(ApiConstants.RESULT_ERROR, "原有菜单删除失败");
+            }
         }
         //保存角色关联的新的菜单信息
-        if (roleMenuService.saveRoleMenu(role.getId(), roleRequest.getMenuIds())) {
+        if (!roleMenuService.saveRoleMenu(role.getId(), roleRequest.getMenuIds())) {
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return RestResponse.fail(ApiConstants.RESULT_ERROR, "更新角色信息失败");
+            return RestResponse.fail(ApiConstants.RESULT_ERROR, "保存新菜单失败");
         }
         return RestResponse.success(role, ApiConstants.RESULT_SUCCESS, "更新角色信息成功");
     }

+ 0 - 23
lift-upload/src/main/java/com/controller/common/ExceptionInfo.java

@@ -1,23 +0,0 @@
-package com.controller.common;
-
-import org.springframework.http.HttpStatus;
-
-public interface ExceptionInfo {
-    String RES_OK = String.valueOf(HttpStatus.OK.value());
-    String RES_ERROR = String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value());
-    String RES_NOT_FOUND = String.valueOf(HttpStatus.NOT_FOUND.value());
-    String RES_FORBIDDEN = String.valueOf(HttpStatus.FORBIDDEN.value());
-    String RES_BAD_REQUEST = String.valueOf(HttpStatus.BAD_REQUEST.value());
-    String RES_METHOD_NOT_ALLOWED = String.valueOf(HttpStatus.METHOD_NOT_ALLOWED.value());
-    String RES_UNAUTHORIZED = String.valueOf(HttpStatus.UNAUTHORIZED.value());
-    String MESSAGE_OK = "SUCCESS";
-    String MESSSGE_ERROR = "SYSTEM ERROR";
-
-    default String getStatusCode() {
-        return RES_OK;
-    }
-
-    default String getMessage() {
-        return "SUCCESS";
-    }
-}

+ 3 - 1
lift-upload/src/main/java/com/controller/common/RestResponse.java

@@ -1,6 +1,8 @@
 package com.controller.common;
 
-public final class RestResponse<T> implements ExceptionInfo {
+import java.io.Serializable;
+
+public final class RestResponse<T> implements Serializable {
     private final T data;
     private final String statusCode;
     private final String message;