Browse Source

Add 添加系统初始对mongodb测试数据清理功能

enilu 6 years ago
parent
commit
15622561ba

+ 11 - 1
doc/quickstart/initDb.md

@@ -28,4 +28,14 @@
     - 将图片存放到t_sys_cfg表中system.file.upload.path配置的目录下
   
   
-  
+## 清空测试数据
+
+如果想清空所有测试数据,自己通过后台管理功能区录入测试数据,可以通过使用下面配置清空系统测试数据
+```properties
+# 开启该配置自动创建数据库
+spring.jpa.hibernate.ddl-auto=create
+# 是否重新清空mongodb测试数据
+flash.waimai.mongodb.init=true
+使用客户端连接mongodb数据库为shop表创建索引:
+db.shops.createIndex({location: "2dsphere"})
+```  

+ 16 - 13
flash-waimai-api/src/main/java/cn/enilu/flash/api/controller/business/ShopController.java

@@ -72,20 +72,23 @@ public class ShopController extends BaseController {
                 }
             }
             GeoResults<Map> geoResults = mongoRepository.near(Double.valueOf(longitude), Double.valueOf(latitude), "shops",params);
-            List<GeoResult<Map>> geoResultList = geoResults.getContent();
-            List list = Lists.newArrayList();
-            for (int i = 0; i < geoResultList.size(); i++) {
-                Map map = geoResultList.get(i).getContent();
-                Distance distance = new Distance(Double.valueOf(longitude),Double.valueOf(latitude),
-                        Double.valueOf(map.get("longitude").toString()),Double.valueOf(map.get("latitude").toString()));
-                map.put("distance",distance.getDistance());
-
-                map.put("order_lead_time","30分钟");
-                list.add(map);
-            }
             Page<Map> page = new PageFactory<Map>().defaultPage();
-            page.setTotal(list.size());
-            page.setRecords(list);
+            if(geoResults!=null) {
+                List<GeoResult<Map>> geoResultList = geoResults.getContent();
+                List list = Lists.newArrayList();
+                for (int i = 0; i < geoResultList.size(); i++) {
+                    Map map = geoResultList.get(i).getContent();
+                    Distance distance = new Distance(Double.valueOf(longitude), Double.valueOf(latitude),
+                            Double.valueOf(map.get("longitude").toString()), Double.valueOf(map.get("latitude").toString()));
+                    map.put("distance", distance.getDistance());
+
+                    map.put("order_lead_time", "30分钟");
+                    list.add(map);
+                }
+
+                page.setTotal(list.size());
+                page.setRecords(list);
+            }
             return Rets.success(page);
         }
     }

+ 1 - 1
flash-waimai-core/src/main/java/cn/enilu/flash/core/listener/CacheListener.java

@@ -1,4 +1,4 @@
-package cn.enilu.flash.core.listener;
+package cn.enilu.flash.api.listener;
 
 import cn.enilu.flash.cache.ConfigCache;
 import cn.enilu.flash.cache.DictCache;

+ 1 - 1
flash-waimai-core/src/main/java/cn/enilu/flash/core/listener/ConfigListener.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package cn.enilu.flash.core.listener;
+package cn.enilu.flash.api.listener;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;

+ 50 - 0
flash-waimai-api/src/main/java/cn/enilu/flash/api/listener/WebListener.java

@@ -0,0 +1,50 @@
+package cn.enilu.flash.api.listener;
+
+import cn.enilu.flash.bean.entity.front.*;
+import cn.enilu.flash.dao.MongoRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author :enilu
+ * @date :Created in 2019/10/25 11:24
+ */
+@Component
+public class WebListener implements CommandLineRunner {
+    @Autowired
+    private MongoRepository mongoRepository;
+    @Value("${flash.waimai.mongodb.init}")
+    private Boolean init;
+
+    /**
+     * 初始化mongodb 数据
+     */
+    public  void initMongoData(){
+
+        if(init) {
+            //删除全部mongodb测试数据
+            mongoRepository.clear(Shop.class);
+            mongoRepository.clear(Food.class);
+            mongoRepository.clear(Menu.class);
+            mongoRepository.clear(Address.class);
+            mongoRepository.clear(Ratings.class);
+            mongoRepository.clear(Order.class);
+            mongoRepository.clear(Carts.class);
+            mongoRepository.clear("sesions");
+            mongoRepository.clear("users");
+            mongoRepository.clear("userinfos");
+        }
+    }
+    @Override
+    public void run(String... args) throws Exception {
+        Thread thread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                initMongoData();
+            }
+        });
+        thread.start();
+    }
+}

+ 2 - 0
flash-waimai-api/src/main/resources/application-dev.properties

@@ -5,6 +5,8 @@ spring.datasource.username=root
 spring.datasource.password=root
 # 开启该配置自动创建数据库
 spring.jpa.hibernate.ddl-auto=create
+# 是否重新清空mongodb测试数据
+flash.waimai.mongodb.init=false
 #默认使用InnoDB引擎
 spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
 spring.datasource.sql-script-encoding=utf-8

+ 3 - 0
flash-waimai-api/src/main/resources/application-prod.properties

@@ -4,7 +4,10 @@ spring.datasource.url=jdbc:mysql://my-db:3306/waimai?useUnicode=true&characterEn
 spring.datasource.username=waimai
 spring.datasource.password=waimai123
 
+# 开启该配置自动创建数据库
 #spring.jpa.hibernate.ddl-auto=create
+# 是否重新清空mongodb测试数据
+flash.waimai.mongodb.init=false
 #默认使用InnoDB引擎
 spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
 spring.datasource.sql-script-encoding=utf-8

+ 0 - 43
flash-waimai-core/src/main/java/cn/enilu/flash/core/listener/WebListener.java

@@ -1,43 +0,0 @@
-package cn.enilu.flash.core.listener;
-
-import cn.enilu.flash.dao.MongoRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.stereotype.Component;
-
-/**
- * @author :enilu
- * @date :Created in 2019/10/25 11:24
- */
-@Component
-public class WebListener implements CommandLineRunner {
-    @Autowired
-    private MongoRepository mongoRepository;
-
-    /**
-     * 初始化mongodb 数据
-     */
-    public  void initMongoData(){
-        //删除全部mongodb测试数据
-//        mongoRepository.clear(Shop.class);
-//        mongoRepository.clear(Food.class);
-//        mongoRepository.clear(Menu.class);
-//        mongoRepository.clear(Address.class);
-//        mongoRepository.clear(Ratings.class);
-//        mongoRepository.clear(Order.class);
-//        mongoRepository.clear(Carts.class);
-//        mongoRepository.clear("sesions");
-//        mongoRepository.clear("users");
-//        mongoRepository.clear("userinfos");
-    }
-    @Override
-    public void run(String... args) throws Exception {
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run() {
-                initMongoData();
-            }
-        });
-        thread.start();
-    }
-}

+ 28 - 3
flash-waimai-core/src/main/java/cn/enilu/flash/dao/MongoRepository.java

@@ -173,14 +173,39 @@ public class MongoRepository {
         return mongoTemplate.find(Query.query(criteria), Map.class, collectionName);
     }
 
-    public GeoResults<Map> near(double x, double y, String collectionName, Map<String, Object> params) {
+    /**
+     * 查询指定位置附近的商家
+     * @param x
+     * @param y
+     * @param collectionName
+     * @param params
+     * @param miles 公里数
+     * @return
+     */
+    public GeoResults<Map> near(double x, double y, String collectionName, Map<String, Object> params,Integer miles) {
         Point location = new Point(x, y);
-        NearQuery nearQuery = NearQuery.near(location).maxDistance(new Distance(5, Metrics.MILES));
+        NearQuery nearQuery = NearQuery.near(location).maxDistance(new Distance(miles, Metrics.MILES));
         if (params != null && !params.isEmpty()) {
             Query query = Query.query(criteria(params));
             nearQuery.query(query);
         }
-        return mongoTemplate.geoNear(nearQuery, Map.class, collectionName);
+        try {
+            return mongoTemplate.geoNear(nearQuery, Map.class, collectionName);
+        }catch (Exception e){
+            System.out.println(e.getMessage());
+        }
+        return null;
+    }
+    /**
+     * 查询指定位置附近的商家,默认查询十公里范围内
+     * @param x
+     * @param y
+     * @param collectionName
+     * @param params
+     * @return
+     */
+    public GeoResults<Map> near(double x, double y, String collectionName, Map<String, Object> params) {
+      return near(x,y,collectionName,params,10);
     }
 
     public long count(Class klass) {

+ 25 - 24
flash-waimai-manage/src/views/dashboard/index.vue

@@ -61,7 +61,29 @@
 
     <el-row :gutter="20" >
       <el-col :span="12">
-        <v-chart :options="pieData" class="chart section"/>
+        <el-collapse   class="section">
+          <el-collapse-item title="2019双11All in cloud低至一折" name="1">
+            <div><a href="https://www.aliyun.com/1111/2019/home?userCode=alts44ap" target="_blank">点击查看详情</a></div>
+          </el-collapse-item>
+          <el-collapse-item title="主机爆款限时优惠" name="2">
+            <div><a href="https://www.aliyun.com/acts/hotsale?userCode=alts44ap" target="_blank">点击查看详情</a> </div>
+          </el-collapse-item>
+          <el-collapse-item title="企业级云服务器五折优惠" name="3">
+            <div><a href="https://promotion.aliyun.com/ntms/act/enterprise-discount.html?userCode=alts44ap" target="_blank">点击查看详情</a> </div>
+          </el-collapse-item>
+          <el-collapse-item title="全民云计算云主机低至4折" name="4">
+            <div><a href="https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=alts44ap" target="_blank">点击查看详情</a> </div>
+          </el-collapse-item>
+          <el-collapse-item title="商标注册服务低至8折" name="5">
+            <div><a href="https://tm.aliyun.com/?userCode=alts44ap" target="_blank">点击查看详情</a> </div>
+          </el-collapse-item>
+          <el-collapse-item title="云短信产品低至8折" name="6">
+            <div><a href="https://www.aliyun.com/acts/alicomcloud/new-discount?userCode=alts44ap" target="_blank">点击查看详情</a> </div>
+          </el-collapse-item>
+
+
+
+        </el-collapse>
       </el-col>
       <el-col :span="12">
         <v-chart :options="barData" class="chart section"/>
@@ -88,30 +110,9 @@
         </el-table>
 
       </el-col>
+
       <el-col :span="12">
-        <el-collapse   class="section">
-          <el-collapse-item title="一致性 Consistency" name="1">
-            <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
-            <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
-          </el-collapse-item>
-          <el-collapse-item title="反馈 Feedback" name="2">
-            <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
-            <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
-          </el-collapse-item>
-          <el-collapse-item title="效率 Efficiency" name="3">
-            <div>简化流程:设计简洁直观的操作流程;</div>
-            <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
-            <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
-          </el-collapse-item>
-          <el-collapse-item title="可控 Controllability" name="4">
-            <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
-            <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
-          </el-collapse-item>
-          <el-collapse-item title="可控 Controllability" name="4">
-            <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
-            <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
-          </el-collapse-item>
-        </el-collapse>
+        <v-chart :options="pieData" class="chart section"/>
       </el-col>
     </el-row>
   </div>

+ 1 - 1
flash-waimai-manage/src/views/login/index.vue

@@ -37,7 +37,7 @@
         </span>
       </el-form-item>
 
-      <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">{{ $t('login.logIn') }}</el-button>
+      <el-button :loading="loading" type="warning" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">{{ $t('login.logIn') }}</el-button>
 
       <div style="position:relative">
         <div class="tips">

+ 1 - 1
flash-waimai-manage/src/views/login/login.scss

@@ -41,7 +41,7 @@ $cursor: #fff;
 }
 $bg:#2d3a4b;
 $dark_gray:#889aa4;
-$light_gray:#eee;
+$light_gray:#de9141;
 
 .login-container {
   min-height: 100%;

BIN
flash-waimai-manage/static/img/bg.jpg