Quellcode durchsuchen

Merge branch 'test' of http://git.dayaedu.com/yonge/mec into dev

# Conflicts:
#	mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java
#	mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java
#	mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml
zouxuan vor 7 Monaten
Ursprung
Commit
09beafaa67
45 geänderte Dateien mit 1258 neuen und 360 gelöschten Zeilen
  1. 8 0
      audio-analysis/pom.xml
  2. BIN
      audio-analysis/src/main/.DS_Store
  3. 10 0
      mec-application/pom.xml
  4. 69 0
      mec-application/src/main/java/com/ym/mec/config/RequestWrapper.java
  5. 14 0
      mec-application/src/main/java/com/ym/mec/config/WebMvcConfig.java
  6. 39 0
      mec-application/src/main/java/com/ym/mec/filter/RequestBodyReaderFilter.java
  7. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java
  8. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  9. 5 5
      mec-application/src/main/resources/bootstrap-test.properties
  10. 11 23
      mec-application/src/main/resources/logback-dev.xml
  11. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  12. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  13. 4 4
      mec-biz/src/main/resources/config/mybatis/MultiDataSourceHomeStatsMapper.xml
  14. 3 3
      mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml
  15. 2 2
      mec-eureka/pom.xml
  16. 1 0
      mec-gateway/mec-gateway-web/src/main/resources/bootstrap-dev.properties
  17. 1 0
      mec-gateway/mec-gateway-web/src/main/resources/bootstrap-prod.properties
  18. 26 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java
  19. 30 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderCourierService.java
  20. 68 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderCourierServiceImpl.java
  21. 28 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java
  22. 1 1
      mec-mall/mall-admin/src/main/resources/logback-spring.xml
  23. 9 1
      mec-mall/mall-common/pom.xml
  24. 150 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/domain/CourierInfo.java
  25. 61 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/enums/CompanyEnum.java
  26. 7 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/package-info.java
  27. 40 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/CourierService.java
  28. 144 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/impl/Courier100ServiceImpl.java
  29. 1 0
      mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java
  30. 38 0
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/OmsOrderCourierMapper.java
  31. 3 3
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java
  32. 75 0
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderCourier.java
  33. 3 279
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderReturnApply.java
  34. 114 0
      mec-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderCourierMapper.xml
  35. 23 0
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  36. 99 19
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java
  37. 30 0
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsOrderCourierService.java
  38. 17 0
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java
  39. 68 0
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsOrderCourierServiceImpl.java
  40. 1 1
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  41. 42 6
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java
  42. 2 2
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java
  43. 0 0
      mec-web/src/main/java/com/ym/mec/web/controller/PhotoAlbumController.java
  44. 0 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduPhotoAlbumController.java
  45. 0 5
      pom.xml

+ 8 - 0
audio-analysis/pom.xml

@@ -93,6 +93,14 @@
 			<artifactId>mec-biz</artifactId>
 			<exclusions>
 				<exclusion>
+					<artifactId>dayaedu-openfeign-api</artifactId>
+					<groupId>com.dayaedu.cbs.openfeign</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>dayaedu-openfeign-client</artifactId>
+					<groupId>com.dayaedu.cbs.openfeign</groupId>
+				</exclusion>
+				<exclusion>
 					<artifactId>netty-common</artifactId>
 					<groupId>io.netty</groupId>
 				</exclusion>

BIN
audio-analysis/src/main/.DS_Store


+ 10 - 0
mec-application/pom.xml

@@ -19,6 +19,16 @@
     </properties>
     <dependencies>
         <dependency>
+            <groupId>com.plumelog</groupId>
+            <artifactId>plumelog-logback</artifactId>
+            <version>3.5.3</version>
+        </dependency>
+<!--        <dependency>
+            <groupId>com.plumelog</groupId>
+            <artifactId>plumelog-trace</artifactId>
+            <version>3.5.3</version>
+        </dependency>-->
+        <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>

+ 69 - 0
mec-application/src/main/java/com/ym/mec/config/RequestWrapper.java

@@ -0,0 +1,69 @@
+package com.ym.mec.config;
+
+import org.apache.commons.io.IOUtils;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.*;
+
+public class RequestWrapper extends HttpServletRequestWrapper {
+
+    //参数字节数组
+    private byte[] requestBody;
+
+    //Http请求对象
+    private HttpServletRequest request;
+
+    public RequestWrapper(HttpServletRequest request) throws IOException {
+        super(request);
+        this.request = request;
+    }
+
+    @Override
+    public ServletInputStream getInputStream() throws IOException {
+        /**
+         * 每次调用此方法时将数据流中的数据读取出来,然后再回填到InputStream之中
+         * 解决通过@RequestBody和@RequestParam(POST方式)读取一次后控制器拿不到参数问题
+         */
+        if (null == this.requestBody) {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            IOUtils.copy(request.getInputStream(), baos);
+            this.requestBody = baos.toByteArray();
+        }
+
+        final ByteArrayInputStream bais = new ByteArrayInputStream(requestBody);
+        return new ServletInputStream() {
+
+            @Override
+            public boolean isFinished() {
+                return false;
+            }
+
+            @Override
+            public boolean isReady() {
+                return false;
+            }
+
+            @Override
+            public void setReadListener(ReadListener listener) {
+
+            }
+
+            @Override
+            public int read() {
+                return bais.read();
+            }
+        };
+    }
+
+    public byte[] getRequestBody() {
+        return requestBody;
+    }
+
+    @Override
+    public BufferedReader getReader() throws IOException {
+        return new BufferedReader(new InputStreamReader(this.getInputStream()));
+    }
+}

+ 14 - 0
mec-application/src/main/java/com/ym/mec/config/WebMvcConfig.java

@@ -15,10 +15,12 @@ import com.microsvc.toolkit.common.webportal.converter.EnumsConvertorFactory;
 import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 import com.ym.mec.common.enums.BaseEnum;
+import com.ym.mec.filter.RequestBodyReaderFilter;
 import com.ym.mec.interceptor.OperationLogInterceptor;
 import com.ym.mec.interceptor.TenantInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
@@ -131,4 +133,16 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		return new HttpMessageConverters(converter);
 	}
 
+	@Bean
+	public FilterRegistrationBean<RequestBodyReaderFilter> fequestBodyReaderFilter() {
+		FilterRegistrationBean<RequestBodyReaderFilter> registrationBean = new FilterRegistrationBean<>();
+		RequestBodyReaderFilter filter = new RequestBodyReaderFilter();
+		registrationBean.setFilter(filter);
+		ArrayList<String> urls = new ArrayList<>();
+		urls.add("/*");//配置过滤规则
+		registrationBean.setUrlPatterns(urls);
+		registrationBean.setOrder(3);
+		return registrationBean;
+	}
+
 }

+ 39 - 0
mec-application/src/main/java/com/ym/mec/filter/RequestBodyReaderFilter.java

@@ -0,0 +1,39 @@
+package com.ym.mec.filter;
+
+import com.ym.mec.config.RequestWrapper;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+public class RequestBodyReaderFilter implements Filter {
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
+        try {
+            ServletRequest requestWrapper = null;
+            if (request instanceof HttpServletRequest) {
+                requestWrapper = new RequestWrapper((HttpServletRequest) request);
+            }
+            if (requestWrapper == null) {
+                chain.doFilter(request, response);
+            } else {
+                chain.doFilter(requestWrapper, response);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (ServletException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+}

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java

@@ -122,7 +122,7 @@ public class MusicSheetController {
                 queryInfo.setSubjectId(instrument.getSubjectId());
             }
         } else if (StringUtils.isNotBlank(student.getSubjectIdList())){
-            queryInfo.setSubjectId(Integer.parseInt(student.getSubjectIdList()));
+//            queryInfo.setSubjectId(Integer.parseInt(student.getSubjectIdList()));
         }
         queryInfo.setPage(query.getPage());
         queryInfo.setRows(query.getRows());

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -3,6 +3,7 @@ package com.ym.mec.student.controller;
 import com.google.common.collect.Sets;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
@@ -90,7 +91,6 @@ public class StudentManageController extends BaseController {
     @Autowired
     private CloudTeacherOrderService cloudTeacherOrderService;
 
-
     private final static Logger LOGGER = LoggerFactory.getLogger(StudentManageController.class);
 
     @Autowired

+ 5 - 5
mec-application/src/main/resources/bootstrap-test.properties

@@ -1,12 +1,12 @@
 spring.cloud.nacos.config.server-addr=10.206.0.17:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
+#\u9ED8\u8BA4\u4E3APublic\u547D\u540D\u7A7A\u95F4,\u53EF\u4EE5\u7701\u7565\u4E0D\u5199
 spring.cloud.nacos.config.namespace=414816a2-0087-48ac-b50b-375d61cf1cd5
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
+#\u6307\u5B9A\u914D\u7F6E\u7FA4\u7EC4 --\u5982\u679C\u662FPublic\u547D\u540D\u7A7A\u95F4 \u5219\u53EF\u4EE5\u7701\u7565\u7FA4\u7EC4\u914D\u7F6E
 spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
+#\u6587\u4EF6\u540D -- \u5982\u679C\u6CA1\u6709\u914D\u7F6E\u5219\u9ED8\u8BA4\u4E3A ${spring.appliction.name}
 spring.cloud.nacos.config.prefix=app
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
+#\u6307\u5B9A\u6587\u4EF6\u540E\u7F00
 spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
+#\u662F\u5426\u52A8\u6001\u5237\u65B0
 spring.cloud.nacos.config.enabled=true
 logging.config=classpath:logback-test-env.xml

+ 11 - 23
mec-application/src/main/resources/logback-dev.xml

@@ -1,12 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-    <!--Spring读取配置参数-->
-    <!--<springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
-    <springProperty scope="context" name="LOG_HOME" source="spring.application.name"/>-->
-    <property name="FILE_NAME" value="app" />
-
-    <property name="FILE_LOG_HOME" value="/mdata/mec-dev/logs/app-%d{yyyy-MM-dd_HH}-%i.log" />
+    <property name="LOG_HOME" value="/mdata/mec-dev/logs/app-%d{yyyy-MM-dd_HH}-%i.log" />
     <property name="CONSOLE_LOG_PATTERN"
               value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
 
@@ -19,7 +14,7 @@
     <appender name="file"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>${FILE_LOG_HOME}</FileNamePattern>
+            <FileNamePattern>${LOG_HOME}</FileNamePattern>
             <MaxHistory>90</MaxHistory>
             <TimeBasedFileNamingAndTriggeringPolicy
                     class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
@@ -32,17 +27,14 @@
         </encoder>
     </appender>
 
-    <appender name="FeignAccessFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${LOG_HOME}/${FILE_NAME}-feign.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${LOG_HOME}/%d{yyyyMM,aux}/feign-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
-            <maxHistory>30</maxHistory>
-            <totalSizeCap>1GB</totalSizeCap>
-            <maxFileSize>20 MB</maxFileSize>
-        </rollingPolicy>
-        <encoder charset="UTF-8">
-            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %p %c{0} %m%n</pattern>
-        </encoder>
+    <appender name="redisAppender" class="com.plumelog.logback.appender.RedisAppender">
+        <appName>plumelog</appName>
+        <redisHost>10.206.0.13</redisHost>
+        <redisPort>6379</redisPort>
+        <redisAuth>dyym</redisAuth>
+        <env>dev</env>
+        <redisDb>10</redisDb>
+        <runModel>2</runModel>
     </appender>
 
     <logger name="com.ym.app" level="INFO" />
@@ -52,10 +44,6 @@
     <root level="INFO">
         <appender-ref ref="stdout" />
         <appender-ref ref="file" />
+        <appender-ref ref="redisAppender" />
     </root>
-
-    <!--总控平台Feign接口日志-->
-    <logger name="com.dayaedu.cbs.openfeign.client" level="DEBUG" additivity="false">
-        <appender-ref ref="FeignAccessFile" />
-    </logger>
 </configuration>

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -521,9 +521,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return quit(imGroupId, userIdList);
 	}
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean quit(String imGroupId, List<Integer> userIdList) {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean quit(String imGroupId, List<Integer> userIdList) {
 
         return quit(imGroupId, userIdList, true);
     }

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -2886,7 +2886,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                                            .getLiveRoomStatus();
             ImUserState imUserState = new ImUserState();
             imUserState.setUserid(userId.toString());
-            imUserState.setStatus(onlineStatus == 1 && liveRoomStatus == 1?"0":"1");
+//            imUserState.setStatus(onlineStatus == 1 && liveRoomStatus == 1?"0":"1");
+            imUserState.setStatus(onlineStatus == 1 ?"0":"1");
             imUserState.setOs(callbackOnMemberStateChange.getOptPlatform());
             imUserState.setTime(new Date().getTime());
             imUserState.setRoomUid(callbackOnMemberStateChange.getGroupId());
@@ -2928,10 +2929,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             imUserState.setRoomUid(callbackAfterMemberExit.getGroupId());
             imUserStates.add(imUserState);
         }
+
         liveBroadcastRoomMemberDao.updateLiveRoomStatus(userIds, callbackAfterMemberExit.getGroupId(),liveRoomStatus);
         CompletableFuture.runAsync(() -> {
             opsRoom(imUserStates);
         });
+
     }
 
     @Override
@@ -2974,10 +2977,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             imUserState.setRoomUid(callbackAfterNewMemberJoin.getGroupId());
             imUserStates.add(imUserState);
         }
+
         liveBroadcastRoomMemberDao.updateLiveRoomStatus(userIds, callbackAfterNewMemberJoin.getGroupId(),liveRoomStatus);
         CompletableFuture.runAsync(() -> {
             opsRoom(imUserStates);
         });
+
     }
 
     @Override

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/MultiDataSourceHomeStatsMapper.xml

@@ -9,14 +9,14 @@
     <select id="clsSummerIncome"
             resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
         select DATE_FORMAT(account_period_time_,#{queryDto.format}) `date`,SUM(trans_amount_) totalAmount
-        from cooleshow_pro.platform_cash_account_record where in_or_out_ = 'IN' AND post_status_ = 'RECORDED'
+        from cooleshow_dev.platform_cash_account_record where in_or_out_ = 'IN' AND post_status_ = 'RECORDED'
         AND DATE_FORMAT(account_period_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
         group by DATE_FORMAT(account_period_time_,#{queryDto.groupBy});
     </select>
     <select id="gytSummerIncome"
             resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
         select DATE_FORMAT(create_time_,#{queryDto.format}) `date`,SUM(current_price_) totalAmount
-        from jmedu_pro.user_payment_order where status_ = 'PAID'
+        from jmedu_dev.user_payment_order where status_ = 'PAID'
         AND DATE_FORMAT(create_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
         group by DATE_FORMAT(create_time_,#{queryDto.groupBy})
     </select>
@@ -34,14 +34,14 @@
     <select id="clsOrgSummerIncome"
             resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
         select DATE_FORMAT(create_time_,#{queryDto.format}) `date`,SUM(trans_amount_) totalAmount
-        from cooleshow_pro.tenant_account_record where in_or_out_ = 'IN' AND post_status_ = 'RECORDED'
+        from cooleshow_dev.tenant_account_record where in_or_out_ = 'IN' AND post_status_ = 'RECORDED'
         AND DATE_FORMAT(create_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
         group by DATE_FORMAT(create_time_,#{queryDto.groupBy})
     </select>
     <select id="ktSummerIncome"
             resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
         select DATE_FORMAT(create_time_,#{queryDto.format}) `date`,SUM(payment_cash_amount_) totalAmount
-        from cooleshow_edu_pro.user_payment_order where status_ = 'PAID'
+        from cooleshow_edu_dev.user_payment_order where status_ = 'PAID'
         AND DATE_FORMAT(create_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
         group by DATE_FORMAT(create_time_,#{queryDto.groupBy})
     </select>

+ 3 - 3
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -155,9 +155,9 @@
         <if test="recentFlag !=null and recentFlag == true">
              max(sms.create_time_) desc,
         </if>
-	     CONVERT(ses.name_ USING gbk) COLLATE gbk_chinese_ci,
-		ses.name_ COLLATE utf8mb4_bin,
-		ses.name_ REGEXP '^[0-9]' DESC, ses.create_time_ DESC
+        CONVERT(ses.name_ USING gbk) COLLATE gbk_chinese_ci,
+        ses.name_ COLLATE utf8mb4_bin,
+        ses.name_ REGEXP '^[0-9]' DESC, ses.create_time_ DESC
 		<include refid="global.limit"/>
 	</select>
 	

+ 2 - 2
mec-eureka/pom.xml

@@ -39,10 +39,10 @@
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
 			</plugin>
-			<plugin>
+			<!--<plugin>
 				<groupId>com.spotify</groupId>
 				<artifactId>docker-maven-plugin</artifactId>
-			</plugin>
+			</plugin>-->
 		</plugins>
 	</build>
 </project>

+ 1 - 0
mec-gateway/mec-gateway-web/src/main/resources/bootstrap-dev.properties

@@ -11,3 +11,4 @@ spring.cloud.nacos.config.file-extension=yaml
 spring.cloud.nacos.config.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+logging.config=classpath:logback-dev.xml

+ 1 - 0
mec-gateway/mec-gateway-web/src/main/resources/bootstrap-prod.properties

@@ -14,3 +14,4 @@ spring.cloud.nacos.config.file-extension=yaml
 spring.cloud.nacos.config.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+logging.config=classpath:logback-spring.xml

+ 26 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.admin.service.OmsOrderCourierService;
 import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
@@ -7,6 +8,7 @@ import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
 import com.yonge.cooleshow.mall.common.api.ResultCode;
 import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -33,6 +35,9 @@ public class OmsOrderController {
     @Autowired
     private OmsOrderService orderService;
 
+
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
     @Autowired
     private RedissonClient redissonClient;
     @ApiOperation("查询订单")
@@ -158,4 +163,25 @@ public class OmsOrderController {
         }
         return CommonResult.failed();
     }
+
+
+
+
+    @ApiOperation("用户查询物流")
+    @GetMapping(value = "/selectCourier")
+    @ResponseBody
+    public CommonResult<OmsOrderCourier> selectCourier(@RequestParam String  deliverySn) {
+        OmsOrderCourier omsOrderCourier = orderCourierService.getCourierInfo(deliverySn);
+        return CommonResult.success(omsOrderCourier);
+    }
+
+
+
+    @ApiOperation("用户刷新物流信息")
+    @GetMapping(value = "/refreshCourier")
+    @ResponseBody
+    public CommonResult refreshCourier(@RequestParam String  deliverySn) throws InterruptedException {
+        OmsOrderCourier omsOrderCourier = orderCourierService.refreshCourier(deliverySn);
+        return CommonResult.success(omsOrderCourier);
+    }
 }

+ 30 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderCourierService.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.admin.service;
+
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-31
+ */
+public interface OmsOrderCourierService {
+
+
+    @Transactional
+    void updateCourierInfo(CourierInfo courierInfos);
+
+    /**
+     * 查询物流
+     */
+    OmsOrderCourier getCourierInfo(String deliverySn);
+
+    /**
+     * 刷新物流信息
+     * @return
+     */
+    @Transactional
+    OmsOrderCourier refreshCourier(String deliverySn) throws InterruptedException;
+}

+ 68 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderCourierServiceImpl.java

@@ -0,0 +1,68 @@
+package com.yonge.cooleshow.admin.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.admin.service.OmsOrderCourierService;
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
+import com.yonge.cooleshow.mall.common.exception.ApiException;
+import com.yonge.cooleshow.mbg.mapper.OmsOrderCourierMapper;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-31
+ */
+@Service
+public class OmsOrderCourierServiceImpl implements OmsOrderCourierService {
+
+    @Autowired
+    private OmsOrderCourierMapper omsOrderCourierMapper;
+    @Autowired
+    private CourierService courierService;
+
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Override
+    public void updateCourierInfo(CourierInfo courierInfos) {
+        String courierNo = courierInfos.getCourierNo();
+        String logistics = JSON.toJSONString(courierInfos.getLogisticsList());
+        omsOrderCourierMapper.updateByCourierNo(courierNo,logistics);
+    }
+
+    @Override
+    public OmsOrderCourier getCourierInfo(String deliverySn) {
+        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
+        if (omsOrderCourier == null) {
+            throw new ApiException("未找到物流信息");
+        }
+        return omsOrderCourier;
+    }
+
+    @Override
+    public OmsOrderCourier refreshCourier(String deliverySn) throws InterruptedException {
+        RLock lock = redissonClient.getLock(OrderCacheEnum.COURIER_LOCK.getCode() + deliverySn);
+        boolean b = lock.tryLock(0,1, TimeUnit.HOURS);
+
+        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
+        if (b) {
+            if (omsOrderCourier == null) {
+                throw new ApiException("未找到物流信息");
+            }
+            CourierInfo courierInfo = courierService.queryTrack(CompanyEnum.descOf(omsOrderCourier.getCompany()),
+                                                                omsOrderCourier.getCourierNo());
+            updateCourierInfo(courierInfo);
+        }
+        return omsOrderCourierMapper.queryByCourierNo(deliverySn);
+    }
+}

+ 28 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -19,6 +19,8 @@ import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.admin.enums.OrderStatisticalEnum;
 import com.yonge.cooleshow.admin.service.*;
 import com.yonge.cooleshow.admin.wrapper.OmsOrderWrapper;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
 import com.yonge.cooleshow.mbg.mapper.*;
 import com.yonge.cooleshow.mbg.model.*;
 import lombok.extern.slf4j.Slf4j;
@@ -84,7 +86,14 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     @Autowired
     private PmsProductMapper pmsProductMapper;
 
+    @Autowired
+    private CourierService courierService;
+
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
 
+    @Autowired
+    private OmsOrderCourierMapper omsOrderCourierMapper;
 
     @Override
     public List<OrderVo> list(OmsOrderQueryParam queryParam, Integer pageSize, Integer pageNum) {
@@ -168,6 +177,25 @@ public class OmsOrderServiceImpl implements OmsOrderService {
             }).collect(Collectors.toList());
         orderOperateHistoryDao.insertList(operateHistoryList);
 
+
+        // 添加快递信息
+        List<OmsOrderCourier> omsOrderCouriers = new ArrayList<>();
+        for (OmsOrderDeliveryParam omsOrderDeliveryParam : deliveryParamList) {
+            OmsOrderCourier omsOrderCourier = new OmsOrderCourier();
+            omsOrderCourier.setOrderId(omsOrderDeliveryParam.getOrderId());
+            omsOrderCourier.setCourierNo(omsOrderDeliveryParam.getDeliverySn());
+            omsOrderCourier.setCompany(omsOrderDeliveryParam.getDeliveryCompany());
+            omsOrderCouriers.add(omsOrderCourier);
+        }
+        omsOrderCourierMapper.batchInsert(omsOrderCouriers);
+        for (OmsOrderCourier omsOrderCourier : omsOrderCouriers) {
+            try {
+                courierService.subscribe(CompanyEnum.descOf(omsOrderCourier.getCompany()),omsOrderCourier.getCourierNo(),sysConfigMapper.getConfig("kuaidiUrl"));
+
+            } catch (Exception e) {
+                log.error("快递订阅失败",e);
+            }
+        }
         return resultMap;
     }
 

+ 1 - 1
mec-mall/mall-admin/src/main/resources/logback-spring.xml

@@ -38,7 +38,7 @@
 		<runModel>2</runModel>
 	</appender>
 
-	<logger name="com.yonge" level="WARN" />
+	<logger name="com.yonge" level="INFO" />
 
 	<!--本地环境:打印控制台 -->
 	<springProfile name="local">

+ 9 - 1
mec-mall/mall-common/pom.xml

@@ -74,6 +74,14 @@
             </exclusions>
         </dependency>
 
+
+        <!--        快递100-->
+        <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.10</version>
+        </dependency>
+
         <dependency>
             <groupId>com.ym</groupId>
             <artifactId>mec-auth-api</artifactId>
@@ -87,7 +95,7 @@
         <dependency>
             <groupId>org.redisson</groupId>
             <artifactId>redisson-spring-boot-starter</artifactId>
-            <version>3.16.4</version>
+            <version>${redisson.version}</version>
         </dependency>
     </dependencies>
 

+ 150 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/domain/CourierInfo.java

@@ -0,0 +1,150 @@
+package com.yonge.cooleshow.mall.common.courier.domain;
+
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description 快递运输信息
+ *
+ * @author liujunchi
+ * @date 2022-10-26
+ */
+public class CourierInfo {
+
+    // 快递公司
+    private CompanyEnum company;
+
+    // 快递单号
+    private String courierNo;
+
+    // 物流信息
+    private List<Logistics> logisticsList;
+
+    public  static class Logistics {
+        // 时间
+        private Date time;
+
+        //内容
+        private String context;
+
+
+        //行政区域的编码
+        private String areaCode;
+
+        //行政区域的名称
+        private String areaName;
+
+        //物流状态名称或者高级状态名称
+        private String status;
+
+        //快件当前地点
+        private String location;
+
+        //行政区域经纬度
+        private String areaCenter;
+
+        //行政区域拼音
+        private String areaPinYin;
+
+        //高级物流状态值
+        private String statusCode;
+
+        public Date getTime() {
+            return time;
+        }
+
+        public void setTime(Date time) {
+            this.time = time;
+        }
+
+        public String getContext() {
+            return context;
+        }
+
+        public void setContext(String context) {
+            this.context = context;
+        }
+
+        public String getAreaCode() {
+            return areaCode;
+        }
+
+        public void setAreaCode(String areaCode) {
+            this.areaCode = areaCode;
+        }
+
+        public String getAreaName() {
+            return areaName;
+        }
+
+        public void setAreaName(String areaName) {
+            this.areaName = areaName;
+        }
+
+        public String getStatus() {
+            return status;
+        }
+
+        public void setStatus(String status) {
+            this.status = status;
+        }
+
+        public String getLocation() {
+            return location;
+        }
+
+        public void setLocation(String location) {
+            this.location = location;
+        }
+
+        public String getAreaCenter() {
+            return areaCenter;
+        }
+
+        public void setAreaCenter(String areaCenter) {
+            this.areaCenter = areaCenter;
+        }
+
+        public String getAreaPinYin() {
+            return areaPinYin;
+        }
+
+        public void setAreaPinYin(String areaPinYin) {
+            this.areaPinYin = areaPinYin;
+        }
+
+        public String getStatusCode() {
+            return statusCode;
+        }
+
+        public void setStatusCode(String statusCode) {
+            this.statusCode = statusCode;
+        }
+    }
+
+    public CompanyEnum getCompany() {
+        return company;
+    }
+
+    public void setCompany(CompanyEnum company) {
+        this.company = company;
+    }
+
+    public String getCourierNo() {
+        return courierNo;
+    }
+
+    public void setCourierNo(String courierNo) {
+        this.courierNo = courierNo;
+    }
+
+    public List<Logistics> getLogisticsList() {
+        return logisticsList;
+    }
+
+    public void setLogisticsList(List<Logistics> logisticsList) {
+        this.logisticsList = logisticsList;
+    }
+}

+ 61 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/enums/CompanyEnum.java

@@ -0,0 +1,61 @@
+package com.yonge.cooleshow.mall.common.courier.enums;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-26
+ */
+public enum CompanyEnum {
+
+    SHUNFENG("shunfeng","顺丰快递"),
+    ZHONGTONG("zhongtong","中通快递"),
+    YUANTONG("yuantong","圆通快递"),
+    HUITONGKUAIDI("huitongkuaidi","汇通"),
+    SHENTONG("shentong","申通"),
+    YUNDA("yunda","韵达快递"),
+    EMS("ems","ems"),
+    JD("jd","京东"),
+    ZHAIJISONG("zhaijisong","宅急送"),
+    DEBANGKUAIDI("debangkuaidi","德邦快递"),
+    ;
+
+
+    // 快递100对应编号
+    private String code;
+
+    // 公司描述
+    private String desc;
+
+    CompanyEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static CompanyEnum codeOf(String s) {
+        for (CompanyEnum value : CompanyEnum.values()) {
+            if (value.getCode().equals(s)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+
+    public static CompanyEnum descOf(String s) {
+        for (CompanyEnum value : CompanyEnum.values()) {
+            if (value.getDesc().equals(s)) {
+                return value;
+            }
+        }
+        return null;
+    }
+}

+ 7 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * Description 快递
+ *
+ * @author: feng-ji
+ * @date: 2022-10-26
+ */
+package com.yonge.cooleshow.mall.common.courier;

+ 40 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/CourierService.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.mall.common.courier.service;
+
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-26
+ */
+public interface CourierService {
+
+
+    /**
+     * 查询快递信息
+     *
+     * @param company 快递公司
+     * @param courierNo 快递编号
+     */
+    CourierInfo queryTrack(CompanyEnum company,String courierNo);
+
+
+    /**
+     * 回调返回数据转 快递信息
+     *
+     * @param body
+     * @return
+     */
+    CourierInfo getCourierInfos(String body);
+
+    /**
+     * 快递信息订阅
+     *
+     * @param company 快递公司编号
+     * @param courierNo 快递单号
+     * @param url 回调地址
+     */
+    boolean subscribe(CompanyEnum company,String courierNo,String url) throws Exception;
+}

+ 144 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/impl/Courier100ServiceImpl.java

@@ -0,0 +1,144 @@
+package com.yonge.cooleshow.mall.common.courier.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.QueryTrack;
+import com.kuaidi100.sdk.api.Subscribe;
+import com.kuaidi100.sdk.contant.ApiInfoConstant;
+import com.kuaidi100.sdk.contant.CompanyConstant;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.pojo.HttpResult;
+import com.kuaidi100.sdk.request.*;
+import com.kuaidi100.sdk.utils.SignUtils;
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
+import com.yonge.cooleshow.mall.common.exception.ApiException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-26
+ */
+@Service("Courier100Service")
+public class Courier100ServiceImpl implements CourierService {
+
+    private static final Logger LOG = LoggerFactory.getLogger(Courier100ServiceImpl.class);
+
+    @Value("${courier.courier100.key:jvpXSAFN9687}")
+    private String key;
+
+    @Value("${courier.courier100.customer:B6E26D57F060E7D9C87032AF7F000046}")
+    private String customer;
+
+
+    @Override
+    public CourierInfo queryTrack(CompanyEnum company, String courierNo) {
+        QueryTrackReq queryTrackReq = new QueryTrackReq();
+        QueryTrackParam queryTrackParam = new QueryTrackParam();
+
+        queryTrackParam.setCom(getCompanyConstant(company));
+        queryTrackParam.setNum(courierNo);
+        queryTrackParam.setResultv2("4");
+        String param = new Gson().toJson(queryTrackParam);
+
+        queryTrackReq.setParam(param);
+        queryTrackReq.setCustomer(customer);
+        queryTrackReq.setSign(SignUtils.querySign(param , key, customer));
+
+        IBaseClient baseClient = new QueryTrack();
+        try {
+            LOG.debug("查询快递参数: {}",queryTrackParam);
+            HttpResult execute = baseClient.execute(queryTrackReq);
+            LOG.info("查询快递信息参数: {}",execute);
+            if (execute.getStatus() != 200) {
+                throw new ApiException(execute.getError());
+            }
+            String body = execute.getBody();
+            return getCourierInfos(body);
+        } catch (Exception e) {
+            LOG.error("查询快递信息异常: ",e);
+            throw new ApiException(e.getMessage());
+        }
+    }
+
+    @Override
+    public CourierInfo getCourierInfos(String body) {
+        JSONObject jsonObject = JSON.parseObject(body);
+        if (!"200".equals(jsonObject.getString("status"))) {
+            throw new ApiException(jsonObject.getString("message"));
+        }
+        CourierInfo courierInfo = new CourierInfo();
+        List<CourierInfo.Logistics> data = JSON.parseArray(jsonObject.getString("data"), CourierInfo.Logistics.class);
+
+        courierInfo.setLogisticsList(data);
+        courierInfo.setCourierNo(jsonObject.getString("nu"));
+        courierInfo.setCompany(CompanyEnum.codeOf(jsonObject.getString("com")));
+        return courierInfo;
+    }
+
+    @Override
+    public boolean subscribe(CompanyEnum company, String courierNo, String url) {
+        SubscribeParameters subscribeParameters = new SubscribeParameters();
+        subscribeParameters.setCallbackurl(url);
+        subscribeParameters.setResultv2("4");
+
+        SubscribeParam subscribeParam = new SubscribeParam();
+        subscribeParam.setParameters(subscribeParameters);
+
+        subscribeParam.setCompany(getCompanyConstant(company));
+        subscribeParam.setNumber(courierNo);
+        subscribeParam.setKey(key);
+
+        SubscribeReq subscribeReq = new SubscribeReq();
+        subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
+        subscribeReq.setParam(new Gson().toJson(subscribeParam));
+
+        IBaseClient subscribe = new Subscribe();
+        try {
+            LOG.debug("快递信息订阅参数: {}",subscribeReq);
+            HttpResult execute = subscribe.execute(subscribeReq);
+            LOG.info("快递信息订阅返回参数: {}",execute);
+            if (execute.getStatus() != 200) {
+                throw new ApiException(execute.getError());
+            }
+            JSONObject jsonObject = JSON.parseObject(execute.getBody());
+            if (!"200".equals(jsonObject.getString("returnCode"))) {
+                throw new ApiException(jsonObject.getString("message"));
+            }
+            return true;
+        } catch (Exception e) {
+            LOG.error("快递信息订阅异常: ",e);
+            throw new ApiException(e.getMessage());
+        }
+    }
+
+    private String getCompanyConstant(CompanyEnum companyEnum) {
+        switch (companyEnum) {
+            case JD: return CompanyConstant.JD;
+            case EMS: return CompanyConstant.EMS;
+            case YUNDA: return CompanyConstant.YD;
+            case SHENTONG: return CompanyConstant.ST;
+            case SHUNFENG: return CompanyConstant.SF;
+            case YUANTONG: return CompanyConstant.YT;
+            case ZHONGTONG: return CompanyConstant.ZT;
+            case ZHAIJISONG: return CompanyConstant.ZJS;
+            case DEBANGKUAIDI: return CompanyConstant.DB;
+            case HUITONGKUAIDI: return CompanyConstant.HT;
+            default: return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        Courier100ServiceImpl courier100Service = new Courier100ServiceImpl();
+        courier100Service.queryTrack(CompanyEnum.DEBANGKUAIDI,"75606690482924");
+    }
+}

+ 1 - 0
mec-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java

@@ -19,6 +19,7 @@ public enum OrderCacheEnum {
     LOCK_REFUND_ORDER_MALL("商城退款锁"),
     LOCK_ORDER_NO_MALL("订单号锁"),
     LOCK_STOCK_MALL("商品库存锁"),
+    COURIER_LOCK("快递单号锁"),
 
     ;
     /***

+ 38 - 0
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/OmsOrderCourierMapper.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.mbg.mapper;
+
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author: feng-ji
+ * @date: 2022-10-28
+ */
+public interface OmsOrderCourierMapper {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OmsOrderCourier record);
+
+    int insertSelective(OmsOrderCourier record);
+
+    OmsOrderCourier selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OmsOrderCourier record);
+
+    int updateByPrimaryKey(OmsOrderCourier record);
+
+    int batchInsert(@Param("list") List<OmsOrderCourier> list);
+
+    /**
+     * 更新物流信息
+     */
+    void updateByCourierNo(@Param("courierNo") String courierNo, @Param("logistics") String logistics);
+
+    /**
+     * 查询物流信息
+     */
+    OmsOrderCourier queryByCourierNo(@Param("courierNo") String deliverySn);
+}

+ 3 - 3
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java

@@ -15,11 +15,11 @@ public class OmsOrder implements Serializable {
 
     private String couponId;
 
-    @ApiModelProperty("下单平台 STUDENT TEACHER")
+    @ApiModelProperty("订单来源应用 SCHOOL:学校,STUDENT:学生,TEACHER:老师")
     private String platformType;
 
 
-    @ApiModelProperty(value = "订单来源 ")
+    @ApiModelProperty(value = "订单来源平台 MEC,GYT,KLX,KT,MALL ")
     private String orderFormType;
 
     @ApiModelProperty(value = "订单编号")
@@ -58,7 +58,7 @@ public class OmsOrder implements Serializable {
     @ApiModelProperty(value = "支付方式:0->未支付;1->支付宝;2->微信")
     private Integer payType;
 
-    @ApiModelProperty(value = "订单来源:0->PC订单;1->app订单 2->学校订单 ")
+    @ApiModelProperty(value = "订单来源类型:0->PC订单;1->app订单 2->学校采购 3 个人订单 4 其他订单 ")
     private Integer sourceType;
 
     @ApiModelProperty(value = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 6 未拉起支付 7 取消")

+ 75 - 0
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderCourier.java

@@ -0,0 +1,75 @@
+package com.yonge.cooleshow.mbg.model;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 快递信息表
+ */
+public class OmsOrderCourier {
+    @ApiModelProperty("")
+    private Long id;
+
+    /**
+    * 快递公司
+    */
+    @ApiModelProperty("快递公司名")
+    private String company;
+
+    /**
+     * 订单号
+     */
+    @ApiModelProperty("订单id")
+    private Long orderId;
+
+    /**
+     * 快递单号
+     */
+    @ApiModelProperty("快递单号")
+    private String courierNo;
+
+    /**
+     * 物流信息
+     */
+    @ApiModelProperty("物流信息 ")
+    private String logistics;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCompany() {
+        return company;
+    }
+
+    public void setCompany(String company) {
+        this.company = company;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getCourierNo() {
+        return courierNo;
+    }
+
+    public void setCourierNo(String courierNo) {
+        this.courierNo = courierNo;
+    }
+
+    public String getLogistics() {
+        return logistics;
+    }
+
+    public void setLogistics(String logistics) {
+        this.logistics = logistics;
+    }
+}

+ 3 - 279
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderReturnApply.java

@@ -1,10 +1,13 @@
 package com.yonge.cooleshow.mbg.model;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
+@Data
 public class OmsOrderReturnApply implements Serializable {
     private Long id;
 
@@ -94,283 +97,4 @@ public class OmsOrderReturnApply implements Serializable {
 
     private BigDecimal precisionAmount;
 
-    private static final long serialVersionUID = 1L;
-
-    public BigDecimal getPrecisionAmount() {
-        return precisionAmount;
-    }
-
-    public void setPrecisionAmount(BigDecimal precisionAmount) {
-        this.precisionAmount = precisionAmount;
-    }
-
-    public Long getOrderItemId() {
-        return orderItemId;
-    }
-
-    public void setOrderItemId(Long orderItemId) {
-        this.orderItemId = orderItemId;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(Long orderId) {
-        this.orderId = orderId;
-    }
-
-    public Long getCompanyAddressId() {
-        return companyAddressId;
-    }
-
-    public void setCompanyAddressId(Long companyAddressId) {
-        this.companyAddressId = companyAddressId;
-    }
-
-    public Long getProductId() {
-        return productId;
-    }
-
-    public void setProductId(Long productId) {
-        this.productId = productId;
-    }
-
-    public String getOrderSn() {
-        return orderSn;
-    }
-
-    public void setOrderSn(String orderSn) {
-        this.orderSn = orderSn;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getMemberUsername() {
-        return memberUsername;
-    }
-
-    public void setMemberUsername(String memberUsername) {
-        this.memberUsername = memberUsername;
-    }
-
-    public BigDecimal getReturnAmount() {
-        return returnAmount;
-    }
-
-    public void setReturnAmount(BigDecimal returnAmount) {
-        this.returnAmount = returnAmount;
-    }
-
-    public String getReturnName() {
-        return returnName;
-    }
-
-    public void setReturnName(String returnName) {
-        this.returnName = returnName;
-    }
-
-    public String getReturnPhone() {
-        return returnPhone;
-    }
-
-    public void setReturnPhone(String returnPhone) {
-        this.returnPhone = returnPhone;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public Date getHandleTime() {
-        return handleTime;
-    }
-
-    public void setHandleTime(Date handleTime) {
-        this.handleTime = handleTime;
-    }
-
-    public String getProductPic() {
-        return productPic;
-    }
-
-    public void setProductPic(String productPic) {
-        this.productPic = productPic;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getProductBrand() {
-        return productBrand;
-    }
-
-    public void setProductBrand(String productBrand) {
-        this.productBrand = productBrand;
-    }
-
-    public String getProductAttr() {
-        return productAttr;
-    }
-
-    public void setProductAttr(String productAttr) {
-        this.productAttr = productAttr;
-    }
-
-    public Integer getProductCount() {
-        return productCount;
-    }
-
-    public void setProductCount(Integer productCount) {
-        this.productCount = productCount;
-    }
-
-    public BigDecimal getProductPrice() {
-        return productPrice;
-    }
-
-    public void setProductPrice(BigDecimal productPrice) {
-        this.productPrice = productPrice;
-    }
-
-    public BigDecimal getProductRealPrice() {
-        return productRealPrice;
-    }
-
-    public void setProductRealPrice(BigDecimal productRealPrice) {
-        this.productRealPrice = productRealPrice;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getProofPics() {
-        return proofPics;
-    }
-
-    public void setProofPics(String proofPics) {
-        this.proofPics = proofPics;
-    }
-
-    public String getHandleNote() {
-        return handleNote;
-    }
-
-    public void setHandleNote(String handleNote) {
-        this.handleNote = handleNote;
-    }
-
-    public String getHandleMan() {
-        return handleMan;
-    }
-
-    public void setHandleMan(String handleMan) {
-        this.handleMan = handleMan;
-    }
-
-    public String getReceiveMan() {
-        return receiveMan;
-    }
-
-    public void setReceiveMan(String receiveMan) {
-        this.receiveMan = receiveMan;
-    }
-
-    public Date getReceiveTime() {
-        return receiveTime;
-    }
-
-    public void setReceiveTime(Date receiveTime) {
-        this.receiveTime = receiveTime;
-    }
-
-    public String getReceiveNote() {
-        return receiveNote;
-    }
-
-    public void setReceiveNote(String receiveNote) {
-        this.receiveNote = receiveNote;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", orderId=").append(orderId);
-        sb.append(", companyAddressId=").append(companyAddressId);
-        sb.append(", productId=").append(productId);
-        sb.append(", orderSn=").append(orderSn);
-        sb.append(", createTime=").append(createTime);
-        sb.append(", memberUsername=").append(memberUsername);
-        sb.append(", returnAmount=").append(returnAmount);
-        sb.append(", returnName=").append(returnName);
-        sb.append(", returnPhone=").append(returnPhone);
-        sb.append(", status=").append(status);
-        sb.append(", handleTime=").append(handleTime);
-        sb.append(", productPic=").append(productPic);
-        sb.append(", productName=").append(productName);
-        sb.append(", productBrand=").append(productBrand);
-        sb.append(", productAttr=").append(productAttr);
-        sb.append(", productCount=").append(productCount);
-        sb.append(", productPrice=").append(productPrice);
-        sb.append(", productRealPrice=").append(productRealPrice);
-        sb.append(", reason=").append(reason);
-        sb.append(", description=").append(description);
-        sb.append(", proofPics=").append(proofPics);
-        sb.append(", handleNote=").append(handleNote);
-        sb.append(", handleMan=").append(handleMan);
-        sb.append(", receiveMan=").append(receiveMan);
-        sb.append(", receiveTime=").append(receiveTime);
-        sb.append(", receiveNote=").append(receiveNote);
-        sb.append(", serialVersionUID=").append(serialVersionUID);
-        sb.append("]");
-        return sb.toString();
-    }
-
-    public String getDeliverySn() {
-        return deliverySn;
-    }
-
-    public void setDeliverySn(String deliverySn) {
-        this.deliverySn = deliverySn;
-    }
 }

+ 114 - 0
mec-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderCourierMapper.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.mbg.mapper.OmsOrderCourierMapper">
+  <resultMap id="BaseResultMap" type="com.yonge.cooleshow.mbg.model.OmsOrderCourier">
+    <!--@mbg.generated-->
+    <!--@Table oms_order_courier-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="company" jdbcType="VARCHAR" property="company" />
+    <result column="order_id" jdbcType="BIGINT" property="orderId" />
+    <result column="courier_no" jdbcType="VARCHAR" property="courierNo" />
+    <result column="logistics" jdbcType="LONGVARCHAR" property="logistics" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, company, order_id, courier_no, logistics
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from oms_order_courier
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from oms_order_courier
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into oms_order_courier (company, order_id, courier_no, 
+      logistics)
+    values (#{company,jdbcType=VARCHAR}, #{orderId,jdbcType=BIGINT}, #{courierNo,jdbcType=VARCHAR}, 
+      #{logistics,jdbcType=LONGVARCHAR})
+  </insert>
+  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into oms_order_courier
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="company != null">
+        company,
+      </if>
+      <if test="orderId != null">
+        order_id,
+      </if>
+      <if test="courierNo != null">
+        courier_no,
+      </if>
+      <if test="logistics != null">
+        logistics,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="company != null">
+        #{company,jdbcType=VARCHAR},
+      </if>
+      <if test="orderId != null">
+        #{orderId,jdbcType=BIGINT},
+      </if>
+      <if test="courierNo != null">
+        #{courierNo,jdbcType=VARCHAR},
+      </if>
+      <if test="logistics != null">
+        #{logistics,jdbcType=LONGVARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier">
+    <!--@mbg.generated-->
+    update oms_order_courier
+    <set>
+      <if test="company != null">
+        company = #{company,jdbcType=VARCHAR},
+      </if>
+      <if test="orderId != null">
+        order_id = #{orderId,jdbcType=BIGINT},
+      </if>
+      <if test="courierNo != null">
+        courier_no = #{courierNo,jdbcType=VARCHAR},
+      </if>
+      <if test="logistics != null">
+        logistics = #{logistics,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier">
+    <!--@mbg.generated-->
+    update oms_order_courier
+    set company = #{company,jdbcType=VARCHAR},
+      order_id = #{orderId,jdbcType=BIGINT},
+      courier_no = #{courierNo,jdbcType=VARCHAR},
+      logistics = #{logistics,jdbcType=LONGVARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into oms_order_courier
+    (company, order_id, courier_no, logistics)
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.company,jdbcType=VARCHAR}, #{item.orderId,jdbcType=BIGINT}, #{item.courierNo,jdbcType=VARCHAR}, 
+        #{item.logistics,jdbcType=LONGVARCHAR})
+    </foreach>
+  </insert>
+
+  <update id="updateByCourierNo">
+    update oms_order_courier set logistics = #{logistics} where courier_no = #{courierNo};
+  </update>
+
+  <select id="queryByCourierNo" resultMap="BaseResultMap">
+    select * from oms_order_courier where courier_no = #{courierNo} order by  id desc limit  1
+    </select>
+</mapper>

+ 23 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -9,11 +9,13 @@ import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 import com.yonge.cooleshow.mall.common.util.DistributedLock;
 import com.yonge.cooleshow.mall.common.util.StringUtil;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 import com.yonge.cooleshow.mbg.model.UmsMember;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
+import com.yonge.cooleshow.portal.service.OmsOrderCourierService;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
 import com.yonge.cooleshow.portal.service.UmsMemberService;
 import com.yonge.cooleshow.portal.service.UserOrderPaymentService;
@@ -52,6 +54,9 @@ public class OmsPortalOrderController {
     @Value("${message.debugMode}")
     private boolean debugMode;
 
+
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
     @Autowired
     private RedissonClient redissonClient;
 
@@ -263,4 +268,22 @@ public class OmsPortalOrderController {
                                }, 60L, TimeUnit.SECONDS);
         return CommonResult.success(null);
     }
+
+
+    @ApiOperation("用户查询物流")
+    @GetMapping(value = "/selectCourier")
+    @ResponseBody
+    public CommonResult<OmsOrderCourier> selectCourier(@RequestParam String  deliverySn) {
+        OmsOrderCourier omsOrderCourier = orderCourierService.getCourierInfo(deliverySn);
+        return CommonResult.success(omsOrderCourier);
+    }
+
+
+
+    @ApiOperation("用户刷新物流信息")
+    @GetMapping(value = "/refreshCourier")
+    @ResponseBody
+    public CommonResult refreshCourier(@RequestParam String  deliverySn) throws InterruptedException {
+        return CommonResult.success(orderCourierService.refreshCourier(deliverySn));
+    }
 }

+ 99 - 19
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -1,8 +1,21 @@
 package com.yonge.cooleshow.portal.controller.open;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.api.R;
+import com.baomidou.mybatisplus.extension.enums.ApiErrorCode;
 import com.ym.mec.common.controller.BaseController;
+import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
+import com.yonge.cooleshow.mbg.model.PmsProduct;
+import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
+import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
+import com.yonge.cooleshow.portal.dto.ProductSearch;
+import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
 import com.yonge.cooleshow.portal.dto.StockOperateModel;
+import com.yonge.cooleshow.portal.service.OmsOrderCourierService;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import io.swagger.annotations.Api;
@@ -10,9 +23,12 @@ import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/open")
@@ -26,25 +42,10 @@ public class OpenShareController extends BaseController {
     @Autowired
     private OmsPortalOrderService portalOrderService;
 
-
-    // @ApiOperation(value = "老师商品分享分润")
-    // @PostMapping(value="/productProfit")
-    // @ResponseBody
-    // public CommonResult<ShareProductVo> shareProductProfit(@RequestBody ShareProfitParam param) {
-    //     SysUser sysUser = sysUserFeignService.queryUserById(param.getUserId());
-    //     if (sysUser == null  || sysUser.getId() == null) {
-    //         return CommonResult.failed("用户信息获取失败");
-    //     }
-    //     HttpResponseResult<String> client = sysUserFeignService.client();
-    //     if (client.getStatus()) {
-    //         if (!StringUtil.isEmpty(client.getData()) && "teacher".equals(client.getData())) {
-    //             return CommonResult.success(portalProductService.shareProductProfit(sysUser, param.getBizId()));
-    //         }
-    //     } else {
-    //         return CommonResult.success(portalProductService.shareProductProfit(sysUser, param.getBizId()));
-    //     }
-    //     return CommonResult.failed("分享功能暂未开放");
-    // }
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
+    @Autowired
+    private CourierService courierService;
 
     @ApiOperation(value = "同步库存")
     @PostMapping(value="/updateStock/{stockType}")
@@ -55,5 +56,84 @@ public class OpenShareController extends BaseController {
         return CommonResult.success("");
     }
 
+    @ApiOperation(value = "综合搜索、筛选、排序")
+    @RequestMapping(value = "/product/search", method = RequestMethod.POST)
+    @ResponseBody
+    public CommonResult<CommonPage<PmsProduct>> search(@RequestBody ProductSearch search) {
+        List<PmsProduct> productList = portalProductService.search(search.getKeyword(),search.getBrandId(),search.getProductCategoryId(),
+            search.getProductAttributeCategoryId(), search.getPageNum(), search.getPageSize(), search.getSort());
+        return CommonResult.success(CommonPage.restPage(productList));
+    }
+
+    @ApiOperation("获取商品列表下拉条件")
+    @RequestMapping(value = "/search/condition", method = RequestMethod.GET)
+    @ResponseBody
+    public CommonResult<ProductSearchConditionVo> searchCondition() {
+        ProductSearchConditionVo list = portalProductService.searchCondition();
+        return CommonResult.success(list);
+    }
+
+    @ApiOperation("获取前台商品详情")
+    @RequestMapping(value = "/product/detail/{id}", method = RequestMethod.GET)
+    @ResponseBody
+    public CommonResult<PmsPortalProductDetail> detail(@PathVariable Long id,@RequestParam String productSn) {
+        PmsPortalProductDetail productDetail = portalProductService.detail(id);
+        return CommonResult.success(productDetail);
+    }
+
+    @PostMapping(value = "/product/queryNameMap", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public CommonResult<Map<Long,String>> queryNameMap(@RequestBody List<Long> goodsIds) {
+        return CommonResult.success(portalProductService.queryNameMap(goodsIds));
+
+    }
+
+
+    /**
+     * 商品库存查询
+     * @param goodsSkuId 商品存储Id
+     * @return String
+     */
+    @GetMapping(value = "/product/stocks/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<Integer> productStocks(@PathVariable(name = "id") Long goodsSkuId) {
+        log.info("商品库存查询 skuId:{}",goodsSkuId);
+        return R.ok(portalProductService.getStockBySkuId(goodsSkuId));
+
+    }
+
+
+    /**
+     * 查询商品订单状态
+     * @param orderNo 订单编号
+     * @return String
+     */
+    @GetMapping(value = "/product/orderStatus/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<Boolean> productOrderStatus(@PathVariable(name = "id") String orderNo){
+        log.info("查询商品订单状态:{}",orderNo);
+        OmsOrderDetail detail = portalOrderService.detail(orderNo);
+
+        return R.restResult(detail.getStatus().equals(1), ApiErrorCode.SUCCESS);
+    }
+
+
+    @ApiOperation(value = "快递信息回调")
+    @PostMapping(value="/courierCallback", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    @ResponseBody
+    public Object courierCallback( String param) {
+        log.info("快递信息回调:{}",param);
+
+        JSONObject jsonObject = JSON.parseObject(param);
+        String data = jsonObject.getString("lastResult");
+        CourierInfo courierInfos = courierService.getCourierInfos(data);
+
+        // 保存快递信息
+        orderCourierService.updateCourierInfo(courierInfos);
+        Map<String,Object> result = new HashMap<>();
+        result.put("result",true);
+        result.put("returnCode","200");
+        result.put("message","成功");
+
+        return result;
+    }
+
 
 }

+ 30 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsOrderCourierService.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.portal.service;
+
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-31
+ */
+public interface OmsOrderCourierService {
+
+
+    @Transactional
+    void updateCourierInfo(CourierInfo courierInfos);
+
+    /**
+     * 查询物流
+     */
+    OmsOrderCourier getCourierInfo(String deliverySn);
+
+    /**
+     * 刷新物流信息
+     * @return
+     */
+    @Transactional
+    OmsOrderCourier refreshCourier(String deliverySn) throws InterruptedException;
+}

+ 17 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.portal.dto.ShareProductVo;
 import com.yonge.cooleshow.portal.dto.StockOperateModel;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 前台商品管理Service
@@ -57,4 +58,20 @@ public interface PmsPortalProductService {
      * @param stockType
      */
     void reduceStock(List<StockOperateModel> model, String stockType);
+
+    /**
+     * 获取商品sku库存
+     *
+     * @param goodsSkuId 商品skuId
+     */
+    Integer getStockBySkuId(Long goodsSkuId);
+
+
+    /**
+     * 商品编号名称
+     *
+     * @param goodsIds
+     * @return
+     */
+    Map<Long,String> queryNameMap(List<Long> goodsIds);
 }

+ 68 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsOrderCourierServiceImpl.java

@@ -0,0 +1,68 @@
+package com.yonge.cooleshow.portal.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
+import com.yonge.cooleshow.mall.common.exception.ApiException;
+import com.yonge.cooleshow.mbg.mapper.OmsOrderCourierMapper;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import com.yonge.cooleshow.portal.service.OmsOrderCourierService;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-31
+ */
+@Service
+public class OmsOrderCourierServiceImpl implements OmsOrderCourierService {
+
+    @Autowired
+    private OmsOrderCourierMapper omsOrderCourierMapper;
+    @Autowired
+    private CourierService courierService;
+
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Override
+    public void updateCourierInfo(CourierInfo courierInfos) {
+        String courierNo = courierInfos.getCourierNo();
+        String logistics = JSON.toJSONString(courierInfos.getLogisticsList());
+        omsOrderCourierMapper.updateByCourierNo(courierNo,logistics);
+    }
+
+    @Override
+    public OmsOrderCourier getCourierInfo(String deliverySn) {
+        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
+        if (omsOrderCourier == null) {
+            throw new ApiException("未找到物流信息");
+        }
+        return omsOrderCourier;
+    }
+
+    @Override
+    public OmsOrderCourier refreshCourier(String deliverySn) throws InterruptedException {
+        RLock lock = redissonClient.getLock(OrderCacheEnum.COURIER_LOCK.getCode() + deliverySn);
+        boolean b = lock.tryLock(0,1, TimeUnit.HOURS);
+
+        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
+        if (b) {
+            if (omsOrderCourier == null) {
+                throw new ApiException("未找到物流信息");
+            }
+            CourierInfo courierInfo = courierService.queryTrack(CompanyEnum.descOf(omsOrderCourier.getCompany()),
+                                                                omsOrderCourier.getCourierNo());
+            updateCourierInfo(courierInfo);
+        }
+        return omsOrderCourierMapper.queryByCourierNo(deliverySn);
+    }
+}

+ 1 - 1
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -707,7 +707,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     public CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize) {
         if (status.equals("-1")) {
             status = null;
-        }
+        } // 2249608
         UmsMember member = memberService.getCurrentMember();
         PageHelper.startPage(pageNum, pageSize);
         OmsOrderExample orderExample = new OmsOrderExample();

+ 42 - 6
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.beust.jcommander.internal.Lists;
 import com.github.pagehelper.PageHelper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.yonge.cooleshow.mall.common.exception.Asserts;
@@ -117,12 +118,7 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         // 从进货清单中 获取剩余库存数量
         List<Long> productIds = skuStocks.stream().map(PmsSkuStock::getProductId).distinct().collect(Collectors.toList());
 
-        // 计算库存数据
-        List<PmsSkuStockDto.PmsSkuStockStock> skuStockStocks = skuStockMapper.getSkuStockByProductIds(productIds);
-
-        // Convert to map
-        Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> map = skuStockStocks.stream()
-            .collect(Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getProductId, Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getId)));
+        Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> map = getProductStock(productIds);
 
         // Merge
         for (PmsSkuStock skuStock : skuStocks) {
@@ -145,6 +141,16 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         return skuStocks;
     }
 
+    private Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> getProductStock(List<Long> productIds) {
+        // 计算库存数据
+        List<PmsSkuStockDto.PmsSkuStockStock> skuStockStocks = skuStockMapper.getSkuStockByProductIds(productIds);
+
+        // Convert to map
+        Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> map = skuStockStocks.stream()
+            .collect(Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getProductId, Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getId)));
+        return map;
+    }
+
     @Override
     public List<PmsProduct> updateProductStock(List<PmsProduct> pmsProducts) {
         if (CollectionUtils.isEmpty(pmsProducts)) {
@@ -345,6 +351,26 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
 
     }
 
+    @Override
+    public Integer getStockBySkuId(Long goodsSkuId) {
+        PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(goodsSkuId);
+        if (pmsSkuStock == null) {
+            return 0;
+        }
+
+        Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> productStock = getProductStock(Lists.newArrayList(pmsSkuStock.getProductId()));
+
+        Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>> skuStockStock = productStock.get(pmsSkuStock.getProductId());
+        if (skuStockStock == null) {
+            return 0;
+        }
+        List<PmsSkuStockDto.PmsSkuStockStock> pmsSkuStockStocks = skuStockStock.get(pmsSkuStock.getId());
+        if (CollectionUtils.isEmpty(pmsSkuStockStocks)) {
+            return 0;
+        }
+        return pmsSkuStockStocks.stream().mapToInt(item -> item.getInternalStock() + item.getTaxStock()).sum();
+    }
+
 
     private  List<PmsProductAttributeCategory>  getHomeProductAttributeCategory() {
         PmsProductAttributeCategoryExample example = new PmsProductAttributeCategoryExample();
@@ -409,4 +435,14 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         node.setChildren(children);
         return node;
     }
+
+
+    @Override
+    public Map<Long, String> queryNameMap(List<Long> goodsIds) {
+        PmsProductExample example = new PmsProductExample();
+        PmsProductExample.Criteria criteria = example.createCriteria();
+        criteria.andIdIn(goodsIds);
+        List<PmsProduct> goodsList = productMapper.selectByExample(example);
+        return goodsList.stream().collect(Collectors.toMap(PmsProduct::getId, PmsProduct::getName));
+    }
 }

+ 2 - 2
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java

@@ -28,8 +28,8 @@ public class OrderTimeOutCancelTask extends BaseController {
      */
     @GetMapping("/cancelTimeOutOrder")
     public HttpResponseResult cancelTimeOutOrder(){
-        Integer count = portalOrderService.cancelTimeOutOrder();
-        LOGGER.info("取消订单,并根据sku编号释放锁定库存,取消订单数量:{}",count);
+//        Integer count = portalOrderService.cancelTimeOutOrder();
+//        LOGGER.info("取消订单,并根据sku编号释放锁定库存,取消订单数量:{}",count);
         return succeed();
     }
 

+ 0 - 0
mec-web/src/main/java/com/ym/mec/web/controller/PhotoAlbumController.java


+ 0 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduPhotoAlbumController.java


+ 0 - 5
pom.xml

@@ -31,11 +31,6 @@
 
 	<dependencyManagement>
 		<dependencies>
-			<!--<dependency>
-				<groupId>com.alibaba.cloud</groupId>
-				<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-				<version>2.2.1.RELEASE</version>
-			</dependency>-->
 			<dependency>
 				<groupId>org.springframework.cloud</groupId>
 				<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>