Просмотр исходного кода

Merge branch 'feature/1101-appversion' into saas

yuanliang 1 год назад
Родитель
Сommit
b240fcf1ab

+ 51 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenAppVersionInfoController.java

@@ -0,0 +1,51 @@
+package com.ym.mec.student.controller.open;
+
+
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.service.AppVersionInfoService;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/appVersionInfo")
+@Api(tags = "app版本信息管理")
+public class OpenAppVersionInfoController {
+
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
+    @ApiOperation("根据app客户端查询最近的app版本")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType =
+                    "path"),
+            @ApiImplicitParam(name = "status", value = "状态", required = true, dataType = "String",
+                    paramType = "newest/history")
+    })
+    @GetMapping(value = "/queryLatestByPlatform")
+    public R<AppVersionInfo> queryLatestByPlatform(String platform, String status) {
+        String appStatus = Optional.ofNullable(status).orElse("newest");
+        if ("history".equals(appStatus)) {
+            appStatus = "newest,history";
+        }
+        List<AppVersionInfo> list = appVersionInfoService.queryLatestByPlatform(platform, appStatus);
+        if (list.size() > 0) {
+            return R.from(list.get(0));
+        }
+        throw new BizException("未找到数据");
+    }
+}

+ 2 - 1
mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.biz.dal.entity.AppVersionInfoBak;
+import com.ym.mec.biz.dal.wrapper.AppVersionInfoWrapper;
 import com.ym.mec.biz.service.AppVersionInfoService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
@@ -30,7 +31,7 @@ public class AppVersionInfoController extends BaseController {
 	@ApiOperation("分页查询")
 	@GetMapping(value = "/list")
 	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/list')")
-	public Object getList(QueryInfo queryInfo) {
+	public Object getList(AppVersionInfoWrapper.AppVersionInfoQuery queryInfo) {
 		return succeed(appVersionInfoService.queryPage(queryInfo));
 	}
 

+ 51 - 0
mec-application/src/main/java/com/ym/mec/web/controller/open/OpenAppVersionInfoController.java

@@ -0,0 +1,51 @@
+package com.ym.mec.web.controller.open;
+
+
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.service.AppVersionInfoService;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.web:}/open/appVersionInfo")
+@Api(tags = "app版本信息管理")
+public class OpenAppVersionInfoController {
+
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
+    @ApiOperation("根据app客户端查询最近的app版本")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType =
+                    "path"),
+            @ApiImplicitParam(name = "status", value = "状态", required = true, dataType = "String",
+                    paramType = "newest/history")
+    })
+    @GetMapping(value = "/queryLatestByPlatform")
+    public R<AppVersionInfo> queryLatestByPlatform(String platform, String status) {
+        String appStatus = Optional.ofNullable(status).orElse("newest");
+        if ("history".equals(appStatus)) {
+            appStatus = "newest,history";
+        }
+        List<AppVersionInfo> list = appVersionInfoService.queryLatestByPlatform(platform, appStatus);
+        if (list.size() > 0) {
+            return R.from(list.get(0));
+        }
+        throw new BizException("未找到数据");
+    }
+}

+ 5 - 5
mec-application/src/main/resources/bootstrap-dev.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=470509f8-ea21-42cb-9c64-924c5ccc68ce
-#\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-dev.xml

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/AppVersionInfoDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 public interface AppVersionInfoDao extends BaseDAO<Integer, AppVersionInfo> {
 
@@ -14,4 +15,7 @@ public interface AppVersionInfoDao extends BaseDAO<Integer, AppVersionInfo> {
 	 * @param platform
 	 */
 	void batchUpdateStatus(String platform);
+
+	List<AppVersionInfo> queryLatestByPlatform(@Param("platform") String platform, @Param("status") String status);
+
 }

+ 69 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/AppVersionInfoWrapper.java

@@ -0,0 +1,69 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * app版本信息管理
+ * 2023-11-03 13:55:54
+ */
+@ApiModel(value = "AppVersionInfoWrapper对象", description = "app版本信息管理查询对象")
+public class AppVersionInfoWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" AppVersionInfoQuery-app版本信息管理")
+    public static class AppVersionInfoQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+
+        @ApiModelProperty("平台")
+        private String platform;
+
+        @ApiModelProperty("状态")
+        private String status;
+
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static AppVersionInfoQuery from(String json) {
+            return JSON.parseObject(json, AppVersionInfoQuery.class);
+        }
+    }  
+
+	@ApiModel(" AppVersionInfo-app版本信息管理")
+    public static class AppVersionInfo {
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static AppVersionInfo from(String json) {
+            return JSON.parseObject(json, AppVersionInfo.class);
+        }
+	}
+
+}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/AppVersionInfoService.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.service;
 import java.util.List;
 
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.dal.wrapper.AppVersionInfoWrapper;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface AppVersionInfoService extends BaseService<Integer, AppVersionInfo> {
@@ -12,4 +14,8 @@ public interface AppVersionInfoService extends BaseService<Integer, AppVersionIn
 	void add(AppVersionInfo appVersionInfo);
 
 	void updateVersion(AppVersionInfo appVersionInfo);
+
+    List<AppVersionInfo> queryLatestByPlatform(String platform, String appStatus);
+
+	PageInfo<AppVersionInfo> queryPage(AppVersionInfoWrapper.AppVersionInfoQuery queryInfo);
 }

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppVersionInfoServiceImpl.java

@@ -1,10 +1,17 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.ym.mec.biz.dal.wrapper.AppVersionInfoWrapper;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -56,4 +63,26 @@ public class AppVersionInfoServiceImpl extends BaseServiceImpl<Integer, AppVersi
 		appVersionInfoDao.update(appVersionInfo);
 	}
 
+    @Override
+    public List<AppVersionInfo> queryLatestByPlatform(String platform, String appStatus) {
+		return appVersionInfoDao.queryLatestByPlatform(platform, appStatus);
+
+	}
+
+    @Override
+	public PageInfo<AppVersionInfo> queryPage(AppVersionInfoWrapper.AppVersionInfoQuery queryInfo) {
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+		PageInfo<AppVersionInfo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		List<AppVersionInfo> dataList = new ArrayList<>();
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = appVersionInfoDao.queryPage(params);
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
 }

+ 38 - 5
mec-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml

@@ -91,11 +91,23 @@
 	<select id="queryPage" resultMap="AppVersionInfo" parameterType="map">
 		SELECT * FROM app_version_info
 		<where>
-			<if test="search != null and search != ''">
-				platform_ LIKE CONCAT('%',#{search},'%')
+			<if test="keyword != null and keyword.trim() != ''">
+				and (id_ like concat('%',#{keyword},'%') or
+				version_ like concat('%',#{keyword},'%') or
+				description_ like concat('%',#{keyword},'%')
+				)
+			</if>
+			<if test="version != null and version != ''">
+				and version_ = #{version}
+			</if>
+			<if test="platform != null and platform != ''">
+				and platform_ = #{platform}
+			</if>
+			<if test="status != null and status != ''">
+				and status_ = #{status}
 			</if>
 		</where>
-		ORDER BY status_ DESC
+		order by version_ desc ,status_='newest' desc , id_ desc
 		<include refid="global.limit" />
 	</select>
 
@@ -103,9 +115,30 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM app_version_info
 		<where>
-			<if test="search != null and search != ''">
-				platform_ LIKE CONCAT('%',#{search},'%')
+			<if test="keyword != null and keyword.trim() != ''">
+				and (id_ like concat('%',#{keyword},'%') or
+				version_ like concat('%',#{keyword},'%') or
+				description_ like concat('%',#{keyword},'%')
+				)
+			</if>
+			<if test="version != null and version != ''">
+				and version_ = #{version}
+			</if>
+			<if test="platform != null and platform != ''">
+				and platform_ = #{platform}
+			</if>
+			<if test="status != null and status != ''">
+				and status_ = #{status}
 			</if>
 		</where>
 	</select>
+
+	<select id="queryLatestByPlatform" resultMap="AppVersionInfo">
+		SELECT *
+		FROM app_version_info
+		WHERE platform_ = #{platform}
+		  and find_in_set(status_, #{status})
+		order by version_ desc, status_='newest' desc, id_ desc
+		limit 1
+	</select>
 </mapper>