瀏覽代碼

Merge branch 'master' of http://git.9026.com/roobe/miao.git

Ben 8 年之前
父節點
當前提交
68077a9df1
共有 46 個文件被更改,包括 1606 次插入861 次删除
  1. 77 75
      miaomiao/config.xml
  2. 14 8
      miaomiao/www/css/style.css
  3. 19 8
      miaomiao/www/js/config/router.js
  4. 4 18
      miaomiao/www/js/controllers/add.js
  5. 128 18
      miaomiao/www/js/controllers/home.js
  6. 40 62
      miaomiao/www/js/controllers/my.js
  7. 0 13
      miaomiao/www/js/controllers/tabs.js
  8. 13 1
      miaomiao/www/js/services/homeservice.js
  9. 4 1
      miaomiao/www/js/services/httpinterceptor.js
  10. 1 1
      miaomiao/www/js/services/msgservice.js
  11. 2 2
      miaomiao/www/js/services/myservice.js
  12. 0 19
      miaomiao/www/templates/add/index.html
  13. 100 47
      miaomiao/www/templates/home/dream-detail.html
  14. 5 9
      miaomiao/www/templates/home/index.html
  15. 10 9
      miaomiao/www/templates/my/index.html
  16. 1 1
      miaomiao/www/templates/my/my-collect.html
  17. 7 42
      miaomiao/www/templates/my/my-dream.html
  18. 5 1
      miaomiao/www/templates/my/my-profile.html
  19. 2 2
      miaomiao/www/templates/my/my-recharge.html
  20. 2 2
      miaomiao/www/templates/tabs.html
  21. 70 0
      server/app/Helper/LogHelper.php
  22. 1 0
      server/app/Http/Controllers/Api/V1/AttachmentController.php
  23. 63 0
      server/app/Http/Controllers/Api/V1/AuthController.php
  24. 418 0
      server/app/Http/Controllers/Api/V1/DreamController.php
  25. 33 302
      server/app/Http/Controllers/Api/V1/HomeController.php
  26. 260 120
      server/app/Http/Controllers/Api/V1/IndexController.php
  27. 30 64
      server/app/Http/Controllers/Api/V1/MyController.php
  28. 85 0
      server/app/Models/AccountLog.php
  29. 3 0
      server/app/Models/DreamImages.php
  30. 2 12
      server/app/Models/DreamInfoModel.php
  31. 27 0
      server/app/Models/InteractionInfo.php
  32. 17 0
      server/app/Models/SupportDreamModel.php
  33. 1 2
      server/app/Models/SystemInfoModel.php
  34. 5 0
      server/app/Models/UserCareDream.php
  35. 22 5
      server/app/Models/UserInfoModel.php
  36. 3 3
      server/app/Services/Base/ErrorCode.php
  37. 54 0
      server/database/migrations/2017_04_02_113151_create_account_logs_table.php
  38. 1 1
      server/database/migrations/2017_06_01_091444_create_user_info_table.php
  39. 1 1
      server/database/migrations/2017_06_02_062004_create_comments_info_table.php
  40. 2 0
      server/database/migrations/2017_06_03_035722_create_user_care_dream_table.php
  41. 1 2
      server/database/migrations/2017_06_05_020434_create_system_info_table.php
  42. 1 1
      server/database/migrations/2017_06_15_082636_add_column_video_to_dream_info_table.php
  43. 7 4
      server/database/migrations/2017_06_22_083956_create_support_dream_info_table.php
  44. 4 5
      server/database/migrations/2017_06_22_085329_add_user_id_to_dream_info.php
  45. 44 0
      server/database/migrations/2017_06_22_175547_create_interaction_info_table.php
  46. 17 0
      server/routes/api.php

+ 77 - 75
miaomiao/config.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <widget id="com.ionicframework.ionictabs121641" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
 <widget id="com.ionicframework.ionictabs121641" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
   <name>喵喵</name>
   <name>喵喵</name>
   <description>
   <description>
@@ -7,83 +7,85 @@
   <author email="you@example.com" href="http://example.com.com/">
   <author email="you@example.com" href="http://example.com.com/">
       Your Name Here
       Your Name Here
     </author>
     </author>
-  <content src="index.html" />
-  <access origin="*" />
-  <preference name="webviewbounce" value="false" />
-  <preference name="UIWebViewBounce" value="false" />
-  <preference name="DisallowOverscroll" value="true" />
-  <preference name="android-minSdkVersion" value="16" />
-  <preference name="BackupWebStorage" value="none" />
-  <preference name="KeepRunning" value="True" />
-  <preference name="ShowTitle" value="True" />
-  <preference name="InAppBrowserStorageEnabled" value="True" />
-  <preference name="SuppressesIncrementalRendering" value="True" />
-  <preference name="windows-target-version" value="10.0" />
-  <preference name="SplashScreen" value="screen" />
-  <preference name="SplashScreenDelay" value="3000" />
+  <content src="index.html"/>
+  <access origin="*"/>
+  <preference name="webviewbounce" value="false"/>
+  <preference name="UIWebViewBounce" value="false"/>
+  <preference name="DisallowOverscroll" value="true"/>
+  <preference name="android-minSdkVersion" value="16"/>
+  <preference name="BackupWebStorage" value="none"/>
+  <preference name="KeepRunning" value="True"/>
+  <preference name="ShowTitle" value="True"/>
+  <preference name="InAppBrowserStorageEnabled" value="True"/>
+  <preference name="SuppressesIncrementalRendering" value="True"/>
+  <preference name="windows-target-version" value="10.0"/>
+  <preference name="SplashScreen" value="screen"/>
+  <preference name="SplashScreenDelay" value="3000"/>
   <feature name="StatusBar">
   <feature name="StatusBar">
-    <param name="ios-package" onload="true" value="CDVStatusBar" />
+    <param name="ios-package" onload="true" value="CDVStatusBar"/>
   </feature>
   </feature>
   <platform name="ios">
   <platform name="ios">
-    <icon height="57" src="resources/ios/icon/icon.png" width="57" />
-    <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
-    <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
-    <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
-    <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
-    <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
-    <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
-    <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
-    <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
-    <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
-    <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
-    <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
-    <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
-    <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
-    <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
-    <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
-    <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
-    <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
-    <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
-    <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
-    <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
-    <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
-    <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
-    <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
-    <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
-    <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
-    <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
-    <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
-    <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
-    <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
+    <icon height="57" src="resources/ios/icon/icon.png" width="57"/>
+    <icon height="114" src="resources/ios/icon/icon@2x.png" width="114"/>
+    <icon height="40" src="resources/ios/icon/icon-40.png" width="40"/>
+    <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80"/>
+    <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120"/>
+    <icon height="50" src="resources/ios/icon/icon-50.png" width="50"/>
+    <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100"/>
+    <icon height="60" src="resources/ios/icon/icon-60.png" width="60"/>
+    <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120"/>
+    <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180"/>
+    <icon height="72" src="resources/ios/icon/icon-72.png" width="72"/>
+    <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144"/>
+    <icon height="76" src="resources/ios/icon/icon-76.png" width="76"/>
+    <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152"/>
+    <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167"/>
+    <icon height="29" src="resources/ios/icon/icon-small.png" width="29"/>
+    <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58"/>
+    <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87"/>
+    <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640"/>
+    <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750"/>
+    <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242"/>
+    <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208"/>
+    <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048"/>
+    <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732"/>
+    <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024"/>
+    <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536"/>
+    <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048"/>
+    <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768"/>
+    <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640"/>
+    <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320"/>
   </platform>
   </platform>
   <platform name="android">
   <platform name="android">
-    <icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi" />
-    <icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi" />
-    <icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi" />
-    <icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi" />
-    <icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi" />
-    <icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi" />
-    <splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi" />
-    <splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi" />
-    <splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi" />
-    <splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi" />
-    <splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi" />
-    <splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi" />
-    <splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi" />
-    <splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi" />
-    <splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi" />
-    <splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi" />
-    <splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi" />
-    <splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi" />
+    <icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
+    <icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
+    <icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
+    <icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
+    <icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
+    <icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
+    <splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/>
+    <splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/>
+    <splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/>
+    <splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/>
+    <splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/>
+    <splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/>
+    <splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
+    <splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
+    <splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/>
+    <splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
+    <splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
+    <splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
   </platform>
   </platform>
-  <plugin name="cordova-plugin-device" spec="~1.1.1" />
-  <plugin name="cordova-plugin-console" spec="~1.0.2" />
-  <plugin name="cordova-plugin-whitelist" spec="~1.2.1" />
-  <plugin name="cordova-plugin-statusbar" spec="~2.1.0" />
-  <plugin name="ionic-plugin-keyboard" spec="~1.0.9" />
-  <plugin name="cordova-plugin-file-transfer" version="1.6.2" />
-  <plugin name="cordova-plugin-file" version="4.3.2" />
-  <plugin name="cordova-plugin-camera" version="2.4.0" />
-  <plugin name="cordova-plugin-actionsheet" version="2.3.3" />
-  <plugin name="cordova-plugin-media-capture" version="1.4.3" />
-  <plugin name="cordova-plugin-compat" version="1.1.0" /><plugin name="cordova-plugin-splashscreen" version="4.0.3" /></widget>
+  <plugin name="cordova-plugin-device" spec="~1.1.1"/>
+  <plugin name="cordova-plugin-console" spec="~1.0.2"/>
+  <plugin name="cordova-plugin-whitelist" spec="~1.2.1"/>
+  <plugin name="cordova-plugin-statusbar" spec="~2.1.0"/>
+  <plugin name="ionic-plugin-keyboard" spec="~1.0.9"/>
+  <plugin name="cordova-plugin-file-transfer" version="1.6.2"/>
+  <plugin name="cordova-plugin-file" version="4.3.2"/>
+  <plugin name="cordova-plugin-camera" version="2.4.0"/>
+  <plugin name="cordova-plugin-actionsheet" version="2.3.3"/>
+  <plugin name="cordova-plugin-media-capture" version="1.4.3"/>
+  <plugin name="cordova-plugin-compat" version="1.1.0"/>
+  <plugin name="cordova-plugin-splashscreen" version="4.0.3"/>
+</widget>

+ 14 - 8
miaomiao/www/css/style.css

@@ -152,6 +152,7 @@ overflow:auto;
     }
     }
 .mysecond {
 .mysecond {
     color:#9A9A9A;
     color:#9A9A9A;
+    margin-top:5px;
 }
 }
 .mainitem .iheart {
 .mainitem .iheart {
     width: 1.5rem;
     width: 1.5rem;
@@ -173,13 +174,15 @@ overflow:auto;
     text-align: center;
     text-align: center;
     color:#FFF;
     color:#FFF;
 }
 }
-    .user-box .myinfo {
-        padding-top:30px;
-    }
-        .user-box .myinfo img {
-            width:60px;
-            border-radius:100%;
-        }
+.user-box .myinfo {
+    padding-top:30px;
+}
+.user-box .myinfo img {
+    width:60px;
+
+    height: 60px;
+    border-radius:100%;
+}
 .user-row {
 .user-row {
     margin-top:10px;
     margin-top:10px;
 }
 }
@@ -348,9 +351,12 @@ padding-right:3px;
     .detail-like .send {
     .detail-like .send {
         border:1px solid #EAEAEA;
         border:1px solid #EAEAEA;
         font-size:1.2rem;
         font-size:1.2rem;
+        height: 3rem;
+        line-height: 3rem;
+        padding-left: 2rem;
     }
     }
     .detail-like .send span{
     .detail-like .send span{
-        position:relative;
+        /*position:relative;*/
         top:15px;
         top:15px;
     }
     }
 .hdcontent {
 .hdcontent {

+ 19 - 8
miaomiao/www/js/config/router.js

@@ -12,17 +12,28 @@
               templateUrl: "templates/tabs.html",
               templateUrl: "templates/tabs.html",
               controller: 'tabsCtrl'
               controller: 'tabsCtrl'
           })
           })
-        .state('app.home', {
-            url: '/home',
-            views: {
-                'app-home': {
-                    templateUrl: 'templates/home/index.html',
-                    controller: 'homeCtrl'
+            .state('app.home', {
+                url: '/home',
+                views: {
+                    'app-home': {
+                        templateUrl: 'templates/home/index.html',
+                        controller: 'homeCtrl'
+                    }
                 }
                 }
-            }
-        })
+            })
+            .state('app.my_dreamdetail', {
+                url: '/my/dreamdetail',
+                params:{id:null},
+                views: {
+                    'app-my': {
+                        templateUrl: 'templates/home/dream-detail.html',
+                        controller: 'dreamDetailCtrl'
+                    }
+                }
+            })
             .state('app.home_dreamdetail', {
             .state('app.home_dreamdetail', {
                 url: '/home/dreamdetail',
                 url: '/home/dreamdetail',
+                params:{id:null},
                 views: {
                 views: {
                     'app-home': {
                     'app-home': {
                         templateUrl: 'templates/home/dream-detail.html',
                         templateUrl: 'templates/home/dream-detail.html',

+ 4 - 18
miaomiao/www/js/controllers/add.js

@@ -13,21 +13,10 @@
             $scope.closeModal = function () {
             $scope.closeModal = function () {
                 $scope.modal.hide();
                 $scope.modal.hide();
             };
             };
-            $scope.vm={
-                dream:'',
-                about:'',
-                money:""
-            };
-            $scope.imgServer = config.imgServer;
-            $scope.imgs = [];
-            $scope.video = {
-                isOK: false,
-                path: '',
-                server:''
-            };
             
             
             $scope.addpict = function () {
             $scope.addpict = function () {
-                common.chooseImage().then(function (img) {
+                $scope.imgs=new Array();
+                common.chooseImage().then(function (img) { 
                     common.uploadFiles(img,1).then(function (result) {
                     common.uploadFiles(img,1).then(function (result) {
                         var response = JSON.parse(result.response);
                         var response = JSON.parse(result.response);
                         var file = response.data.file;
                         var file = response.data.file;
@@ -51,7 +40,7 @@
                         msg.error('视频上传失败');
                         msg.error('视频上传失败');
                     });
                     });
                 }, function (erro) {
                 }, function (erro) {
-                    msg.error('选择视频失败');
+                    console.log('选择视频失败');
                 });
                 });
             };
             };
             $scope.deletefile = function (file) {
             $scope.deletefile = function (file) {
@@ -78,10 +67,7 @@
                     msg.error(error.data.message);
                     msg.error(error.data.message);
                 });
                 });
             };
             };
-            $scope.$on('$ionicView.beforeEnter', function (viewResult) {
-                $ionicTabsDelegate.showBar(false);
-                $ionicNavBarDelegate.showBackButton(true);
-            });
+            
             $scope.$on('$ionicView.leave', function () {
             $scope.$on('$ionicView.leave', function () {
                 $ionicTabsDelegate.showBar(true);
                 $ionicTabsDelegate.showBar(true);
             });
             });

+ 128 - 18
miaomiao/www/js/controllers/home.js

@@ -17,8 +17,8 @@
                 $scope.type = type;
                 $scope.type = type;
                 $scope.load(true);
                 $scope.load(true);
             }
             }
-            $scope.todetail = function () {
-                $state.go('app.home_dreamdetail');
+            $scope.toDetail = function (id) {
+                $state.go('app.home_dreamdetail',id);
             };
             };
             $scope.filter = {
             $scope.filter = {
                 hasMore: false,
                 hasMore: false,
@@ -35,8 +35,10 @@
                     $scope.filter.pageIndex = 1;
                     $scope.filter.pageIndex = 1;
                     $scope.index.dreams = [];
                     $scope.index.dreams = [];
                 }
                 }
+                msg.loading();
                 homeService.index($scope.type, $scope.filter.pageIndex).then(function (result) {
                 homeService.index($scope.type, $scope.filter.pageIndex).then(function (result) {
-                    $scope.index.banner = result.data.data.banner;
+                    msg.hide();
+                    $scope.index.banners = result.data.data.banners;
                     $scope.index.users = result.data.data.users;
                     $scope.index.users = result.data.data.users;
                     $scope.filter.pageIndex++;
                     $scope.filter.pageIndex++;
                     var more = (result.data.data.dreams.data.length >= $scope.filter.pageSize);
                     var more = (result.data.data.dreams.data.length >= $scope.filter.pageSize);
@@ -47,8 +49,8 @@
                     } else {
                     } else {
                         $scope.$broadcast('scroll.infiniteScrollComplete');
                         $scope.$broadcast('scroll.infiniteScrollComplete');
                     }
                     }
-                }, function (erro) {
-                    msg.error(erro.data.Message);
+                }, function (error) {
+                    msg.hide();
                 });
                 });
             }
             }
             $scope.data = {};
             $scope.data = {};
@@ -58,13 +60,26 @@
           
           
             //});
             //});
         }]);
         }]);
-    app.controller('dreamDetailCtrl', ["$scope", "$state", "msg", "homeService", "$ionicTabsDelegate"
-        , function ($scope, $state, msg, homeService, $ionicTabsDelegate) {
+    app.controller('dreamDetailCtrl', ["$scope", "$state", "msg","common","config", "homeService", "$ionicTabsDelegate","$stateParams","$ionicModal","$timeout"
+        , function ($scope, $state, msg,common, config, homeService, $ionicTabsDelegate,$stateParams,$ionicModal,$itemout) {
+            var id = $stateParams.id;
+            id=6;
+            $scope.load = function (id) {
+                homeService.dreamDetail(id).then(function (result) {
+                    console.log(result);
+                }, function (error) {
+                    msg.error(error.data.message);
+                });
+            }
+            $scope.load(6);
+
             $scope.type = 1;//tab切换
             $scope.type = 1;//tab切换
             $scope.tosupport = false;
             $scope.tosupport = false;
             $scope.support = function ($event) {
             $scope.support = function ($event) {
                 $event.stopPropagation();
                 $event.stopPropagation();
                 $scope.tosupport = true;
                 $scope.tosupport = true;
+                $scope.vm.coin = 0;
+                $scope.index = 0;
             }
             }
             $scope.cancelsupport = function () {
             $scope.cancelsupport = function () {
                 $scope.tosupport = false;
                 $scope.tosupport = false;
@@ -73,9 +88,6 @@
                 $scope.type = type;
                 $scope.type = type;
             }
             }
             $scope.index = 0;
             $scope.index = 0;
-            $scope.changeindex = function (index) {
-                $scope.index = index;
-            }
             $scope.$on('$ionicView.beforeEnter', function () {
             $scope.$on('$ionicView.beforeEnter', function () {
                 $ionicTabsDelegate.showBar(false);
                 $ionicTabsDelegate.showBar(false);
             });
             });
@@ -84,23 +96,113 @@
             });
             });
 
 
             $scope.vm = {
             $scope.vm = {
-                coin:""
+                coin:"",
+                comment:""
+            }
+
+            $scope.changeindex = function (index) {
+                $scope.index = index;
+                $scope.vm.coin = index*5;
             }
             }
             $scope.supportDream = function(data){
             $scope.supportDream = function(data){
+                if(!$scope.vm.coin){
+                    msg.error("请选择梦想币数量!");
+                    return ;
+                }
                 var data = {
                 var data = {
-                    dream_id:"11",
+                    id:id,
                     coin:$scope.vm.coin
                     coin:$scope.vm.coin
                 };
                 };
                 homeService.supportDream(data).then(function(result){
                 homeService.supportDream(data).then(function(result){
-
-                },function(erro){
-
+                    $scope.tosupport = false;
+                    number = result.data.data;
+                    //最新支持乘数
                 })
                 })
             };
             };
-            $scope.show = function(){
-                var obj = document.getElementById("box");
-                obj.style = "white-space: normal;";
+            $scope.collectionDream = function(){
+                homeService.collectionDream(id).then(function(result){
+                    //最新支持乘数
+                })
+            }
+            $scope.showText = function(){ 
+                $scope.aboutStyle = {
+                    "white-space" : "normal"
+                  }
+                $scope.ionDownStyle = {
+                    "display" : "none"
+                }
             }
             }
+
+        $scope.placeholder="评论";
+        $scope.replay = function($event){
+            // $event.stopPropagation();
+            $scope.placeholder="回复百川";
+            $scope.addReplay=true;
+            $scope.vm.comment='';
+        }
+        $scope.comment = function(){
+            $event.stopPropagation();
+            $scope.placeholder="评论"; 
+            $scope.addReplay=true; 
+            $scope.vm.comment='';
+        }
+        $scope.addpict = function () {
+            $scope.imgs=new Array();
+            common.chooseImage().then(function (img) {
+                common.uploadFiles(img,1).then(function (result) {
+                    var response = JSON.parse(result.response);
+                    var file = response.data.file;
+                    $scope.imgs.push(file);
+                }, function (error) {
+                    msg.error('图片上传失败');
+                });
+            }, function (error) {
+                console.log('图片选择失败');
+            });
+        };
+
+          $ionicModal.fromTemplateUrl('recharge-modal.html', {
+            scope: $scope,
+            animation: 'slide-in-up'
+          }).then(function(modal) {
+            $scope.rechagemodal = modal;
+          });
+
+          $scope.openRechargeModal = function() {
+            $scope.rechagemodal.show();
+            $scope.rvm={
+                dream:'',
+                about:'',
+                money:''
+            };
+          };
+          $scope.closeRechargeModal = function() {
+            $scope.rechagemodal.hide();
+          };
+
+          $ionicModal.fromTemplateUrl('interaction-modal.html', {
+            scope: $scope,
+            animation: 'slide-in-up'
+          }).then(function(modal) {
+            $scope.modal = modal;
+          });
+          $scope.openModal = function() {
+            $scope.modal.show();
+            $scope.ivm={
+                dream:'',
+                about:'',
+                money:''
+            };
+            $scope.iimgServer = config.imgServer;
+            $scope.iimgs = [];
+          };
+          $scope.closeModal = function() {
+            $scope.modal.hide();
+          };
+          //当我们用到模型时,清除它!
+          $scope.$on('$destroy', function() {
+            $scope.modal.remove();
+          });
         }]);
         }]);
     app.controller('searchCtrl', ["$scope","homeService", "$state", "msg", "$ionicTabsDelegate", "$ionicNavBarDelegate"
     app.controller('searchCtrl', ["$scope","homeService", "$state", "msg", "$ionicTabsDelegate", "$ionicNavBarDelegate"
         , function ($scope,homeService, $state, msg, $ionicTabsDelegate, $ionicNavBarDelegate) {
         , function ($scope,homeService, $state, msg, $ionicTabsDelegate, $ionicNavBarDelegate) {
@@ -142,6 +244,14 @@
                 });
                 });
             };
             };
         }]);
         }]);
+    app.controller('interactionAddCtrl', ["$scope","homeService", "$state", "msg","config","common", "$ionicTabsDelegate", "$ionicNavBarDelegate"
+        , function ($scope,homeService, $state, msg,config,common, $ionicTabsDelegate, $ionicNavBarDelegate) {
+            $scope.$on('$ionicView.beforeEnter', function () {
+             
+                
+            }); 
+
+    }]);
    
    
     
     
 })(angular.module('app.controllers'));
 })(angular.module('app.controllers'));

+ 40 - 62
miaomiao/www/js/controllers/my.js

@@ -2,74 +2,41 @@
     app.controller('myCtrl', ["$scope", "$state", "$http", "storage", "myService", "common", "config", "msg"
     app.controller('myCtrl', ["$scope", "$state", "$http", "storage", "myService", "common", "config", "msg"
         , function ($scope, $state, $http, storage, myService, common, config, msg) {
         , function ($scope, $state, $http, storage, myService, common, config, msg) {
         $scope.$on('$ionicView.beforeEnter', function (viewResult) {
         $scope.$on('$ionicView.beforeEnter', function (viewResult) {
-            
+            myService.myIndex().then(function(result){
+              console.log(result.data.data);
+              $scope.user = result.data.data
+            });
         });
         });
 
 
 
 
-        $scope.testuploadFile = function(files) {       //单次提交图片的函数
-          console.log(files[0]);
-          var formData = new FormData();
-          formData.append('file', files[0]);
-          formData.append('tag', 'avatar');
-
-            $http({
-                method: 'POST',
-                url: config.server + 'api/attachment/upload',
-                transformRequest: angular.identity,
-                data: formData,
-                // headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
-                headers: {'Content-Type': undefined}
-            }).then(function (result) {
-                // alert(JSON.stringify(result));
-                console.log("attachment upload result:"+JSON.stringify(result));
-            }, function (error) {
-                console.log("attachment upload error:"+JSON.stringify(error));
-
-            })
+        
+        $scope.setAvator = function () {
+            common.setAvator().then(function (result) {
+                var response = JSON.parse(result.response);
+                $timeout(function () {
+                    $scope.vm.user.avatar = response.data.md5;
+                });
+            });
+        };
+        $scope.toprofile = function () {
+            $state.go('app.my_profile');
         };
         };
-            $scope.toprofile = function () {
-                $state.go('app.my_profile');
-            };
 
 
             //我的设置
             //我的设置
         $scope.setting = function(){
         $scope.setting = function(){
             myService.setting().then(function(result){
             myService.setting().then(function(result){
-
-            },function(error){
-
             });
             });
         };
         };
-
-            //我的收藏
-            $scope.collect = function(){
-                myService.collect().then(function(result){
-
-                },function(error){
-
-                });
-            };
-
-            //我的梦想
-            $scope.myDream = function(){
-                myService.myDream().then(function(result){
-
-                },function(error){
-
-                });
-            };
-
+ 
             //修改个人信息
             //修改个人信息
             $scope.myMaterial = function(){
             $scope.myMaterial = function(){
                 myService.myMaterial().then(function(result){
                 myService.myMaterial().then(function(result){
-
-                },function(error){
-
                 })
                 })
             }
             }
         }]);
         }]);
 
 
-    app.controller('profileCtrl', ["$scope", "$state", "storage", "myService", "msg", "common"
-      , function ($scope, $state, storage, myService, msg, common) {
+    app.controller('profileCtrl', ["$scope", "$state","$filter", "storage", "myService", "msg", "common"
+      , function ($scope, $state, $filter, storage, myService, msg, common) {
             $scope.setAvator = function () {
             $scope.setAvator = function () {
                 common.setAvator().then(function (result) {
                 common.setAvator().then(function (result) {
                     debugger;
                     debugger;
@@ -94,8 +61,10 @@
             $scope.$on('$ionicView.beforeEnter', function () {
             $scope.$on('$ionicView.beforeEnter', function () {
                 msg.loading();
                 msg.loading();
                 myService.myIndex().then(function(result){
                 myService.myIndex().then(function(result){
-                  // alert(JSON.stringify(result.data.data.user));
-                  $scope.vm = result.data.data.user;
+                  // alert(JSON.stringify(result.data.data));
+                  $scope.vm = result.data.data;
+                  $scope.vm.sex = $scope.vm.sex+'';
+                  $scope.vm.emotion = $scope.vm.emotion+'';
                   if($scope.vm.birthday){
                   if($scope.vm.birthday){
                       var arr1 = $scope.vm.birthday.split("-");  
                       var arr1 = $scope.vm.birthday.split("-");  
                       $scope.vm.birthday1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); 
                       $scope.vm.birthday1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); 
@@ -108,7 +77,6 @@
             });
             });
  
  
             $scope.saveMaterial = function(){
             $scope.saveMaterial = function(){
-               
                 var data = {
                 var data = {
                     pic:'http://img.taopic.com/uploads/allimg/130103/240435-1301030P33161.jpg', 
                     pic:'http://img.taopic.com/uploads/allimg/130103/240435-1301030P33161.jpg', 
                     sex:$scope.vm.sex,
                     sex:$scope.vm.sex,
@@ -126,6 +94,7 @@
                 myService.saveMaterial(data).then(function(result){
                 myService.saveMaterial(data).then(function(result){
                   msg.hide();
                   msg.hide();
                   msg.success("保存成功!");
                   msg.success("保存成功!");
+                  $state.go('app.my')
                 },function(error){
                 },function(error){
                   msg.hide();
                   msg.hide();
                   msg.error(error.data.message);
                   msg.error(error.data.message);
@@ -147,15 +116,16 @@
      }]);
      }]);
     app.controller('rechargeCtrl', ["$scope", "$state", "myService", "msg"
     app.controller('rechargeCtrl', ["$scope", "$state", "myService", "msg"
   , function ($scope, $state, myService, msg) {
   , function ($scope, $state, myService, msg) {
-      $scope.$on('$ionicView.beforeEnter', function () {
+       $scope.$on('$ionicView.beforeEnter', function () {
 
 
+            $scope.vm = {
+                money:"",
+            }
       });
       });
             //充值
             //充值
-            $scope.recharge = function(){
-                myService.recharge().then(function(result){
-
-                },function(error){
-
+            $scope.recharge = function(money){
+                myService.recharge(money).then(function(result){
+                  $state.go('app.my');
                 });
                 });
             }
             }
 
 
@@ -186,14 +156,22 @@
     app.controller('dreamCtrl', ["$scope", "$state", "myService", "msg"
     app.controller('dreamCtrl', ["$scope", "$state", "myService", "msg"
   , function ($scope, $state, myService, msg) {
   , function ($scope, $state, myService, msg) {
       $scope.$on('$ionicView.beforeEnter', function () {
       $scope.$on('$ionicView.beforeEnter', function () {
-
+            myService.myDream().then(function(result){
+              console.log(result.data.data);
+              $scope.dreams = result.data.data;
+            });
       });
       });
+          $scope.toDetail = function (id) {
+              $state.go('app.my_dreamdetail',id);
+          };
 
 
   }]);
   }]);
     app.controller('collectCtrl', ["$scope", "$state", "myService", "msg"
     app.controller('collectCtrl', ["$scope", "$state", "myService", "msg"
        , function ($scope, $state, myService, msg) {
        , function ($scope, $state, myService, msg) {
       $scope.$on('$ionicView.beforeEnter', function () {
       $scope.$on('$ionicView.beforeEnter', function () {
-
+          myService.collect().then(function(result){
+              console.log(result.data.data);
+          });
       });
       });
        }]);
        }]);
     app.controller('messageSysCtrl', ["$scope", "$state", "myService", "msg"
     app.controller('messageSysCtrl', ["$scope", "$state", "myService", "msg"

+ 0 - 13
miaomiao/www/js/controllers/tabs.js

@@ -5,24 +5,11 @@
             $state.go(target);
             $state.go(target);
         };
         };
 
 
-        $scope.vm={
-
-        };
         $scope.myMes = function(){
         $scope.myMes = function(){
-            myService.myMes().then(function(result){
-
-            },function(error){
-
-            });
             $scope.go("app.my")
             $scope.go("app.my")
         };
         };
 
 
         $scope.myIndex = function(){
         $scope.myIndex = function(){
-            myService.myIndex().then(function(result){
-
-            },function(error){
-
-            });
             $scope.go("app.home")
             $scope.go("app.home")
         };
         };
     }]);
     }]);

+ 13 - 1
miaomiao/www/js/services/homeservice.js

@@ -9,17 +9,29 @@
             },
             },
             supportDream:function(data){
             supportDream:function(data){
                 return $http({
                 return $http({
-                    url:config.server + "api/user/support",
+                    url:config.server + "api/dream/support",
                     method:"post",
                     method:"post",
                     data:data
                     data:data
                 })
                 })
             },
             },
+            collectionDream:function(id){
+                return $http({
+                    url:config.server + "api/dream/collection?id=" + id,
+                    method:"get",
+                })
+            },
             searchContent:function (data){
             searchContent:function (data){
                 return $http({
                 return $http({
                     url: config.server + 'api/index/search?' + data,
                     url: config.server + 'api/index/search?' + data,
                     method:"get"
                     method:"get"
                 })
                 })
             },
             },
+            dreamDetail: function (id) {
+                return $http({
+                    url: config.server + 'api/dream/show?id=' + id,
+                    method: "get"
+                })
+            },
             index: function (type, page) {
             index: function (type, page) {
                 var url = util.format('{0}/api/index/index?type={1}&page={2}', config.server,type,page);
                 var url = util.format('{0}/api/index/index?type={1}&page={2}', config.server,type,page);
                 return $http({
                 return $http({

+ 4 - 1
miaomiao/www/js/services/httpinterceptor.js

@@ -41,7 +41,10 @@
                     return;
                     return;
                 }
                 }
                 if (rejection.status==400) {
                 if (rejection.status==400) {
-                    getMsg().error(rejection.data.error_description);
+                    getMsg().error(rejection.data.message);
+                }
+                if (rejection.status==500) {
+                    getMsg().error(rejection.data.message);
                 }
                 }
                 return $q.reject(rejection);
                 return $q.reject(rejection);
             }
             }

+ 1 - 1
miaomiao/www/js/services/msgservice.js

@@ -50,7 +50,7 @@
                     o["template"] = template
                     o["template"] = template
                 } else {
                 } else {
                     o["title"] = title;
                     o["title"] = title;
-                    o["cssClass"] = "pop-alert"
+                    o["cssClass"] = "pop-alert calm"
                 }
                 }
                 $ionicPopup.alert(o)
                 $ionicPopup.alert(o)
             },
             },

+ 2 - 2
miaomiao/www/js/services/myservice.js

@@ -15,9 +15,9 @@
                     data:data
                     data:data
                 })
                 })
             },
             },
-            recharge:function(){
+            recharge:function(money){
                 return $http({
                 return $http({
-                    url:config.server + "api/my/recharge",
+                    url:config.server + "api/my/recharge?money="+money,
                     method:"get"
                     method:"get"
                 })
                 })
             },
             },

+ 0 - 19
miaomiao/www/templates/add/index.html

@@ -43,23 +43,4 @@
             </button>
             </button>
         </div>
         </div>
     </ion-content>
     </ion-content>
-    <script id="my-modal.html" type="text/ng-template">
-        <ion-modal-view>
-            <ion-header-bar class="bar-calm">
-                <button class="button button-clear icon ion-ios-arrow-back" ng-click="closeModal()">返回</button>
-                <h1 class="title">梦想介绍</h1>
-                <button class="button button-clear" ng-click="closeModal()">确定</button>
-            </ion-header-bar>
-            <ion-content>
-                <div class="addmodal" style="border-bottom: 2px solid #EEEEEE">
-                    <textarea placeholder="请输入梦想介绍"></textarea>
-                </div>
-                <a ng-repeat="item in files" ng-click="showImages(item)" class="img-file-up">
-                    <b style="background-image:url({{item}});"><em ng-click="deletePicture(item)" class="ion-ios-close-outline"></em></b>
-                </a>
-                <a class="btn-file-up" ng-click="addfile()"><i class="ion-image"></i>添加图片</a>
-            </ion-content>
-        
-        </ion-modal-view>
-    </script>
 </ion-view>
 </ion-view>

+ 100 - 47
miaomiao/www/templates/home/dream-detail.html

@@ -1,7 +1,7 @@
-<ion-view view-title="喵喵"> 
+<ion-view view-title="梦想"> 
     <ion-nav-buttons side="right">
     <ion-nav-buttons side="right">
         <button class="button button-clear icon ion-email-unread"></button>
         <button class="button button-clear icon ion-email-unread"></button>
-        <button class="button button-clear icon ion-ios-compose-outline" style="padding-left:10px"></button>
+        <!-- <button class="button button-clear icon ion-ios-compose-outline" style="padding-left:10px"></button> -->
     </ion-nav-buttons>
     </ion-nav-buttons>
     <ion-content style="background-color:#F3F3F3" ng-click="cancelsupport()">
     <ion-content style="background-color:#F3F3F3" ng-click="cancelsupport()">
         <div class="tabs-striped tabs-top">
         <div class="tabs-striped tabs-top">
@@ -19,6 +19,11 @@
         </div>
         </div>
         <div class="icontent" ng-if="type==1">
         <div class="icontent" ng-if="type==1">
             <ion-slides slider="data.slider">
             <ion-slides slider="data.slider">
+                <ion-slide-page ng-if="dream.video">
+                    <div class="box banner"> 
+                        <video ng-src="{{dream.video}}" class="centerme" controls="controls" autoplay></video>
+                    </div>  
+                </ion-slide-page>
                 <ion-slide-page>
                 <ion-slide-page>
                     <div class="box banner"><img ng-src="img/demo/pict.png" /></div>
                     <div class="box banner"><img ng-src="img/demo/pict.png" /></div>
                 </ion-slide-page>
                 </ion-slide-page>
@@ -32,11 +37,11 @@
             <div class="list detail-list">
             <div class="list detail-list">
                 <div class="item">
                 <div class="item">
                     <h2>斯德哥尔摩奇遇</h2>
                     <h2>斯德哥尔摩奇遇</h2>
-                    <p id="box">
+                    <p ng-style="aboutStyle">
                         在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!
                         在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!
                     </p>
                     </p>
                     <div style="text-align: center">
                     <div style="text-align: center">
-                        <i class="icon ion-chevron-down" style="color: #FE4B82" ng-click="show()"></i>
+                        <i class="icon ion-chevron-down" ng-style="ionDownStyle" style="color: #FE4B82" ng-click="showText()"></i>
                     </div>
                     </div>
                 </div>
                 </div>
                 <div class="item row detail-item2">
                 <div class="item row detail-item2">
@@ -73,7 +78,7 @@
                 <div class="item">
                 <div class="item">
                     <button class="button button-assertive" style="width:25%;white-space:normal;line-height:20px">支持乘数×2.8</button>
                     <button class="button button-assertive" style="width:25%;white-space:normal;line-height:20px">支持乘数×2.8</button>
                     <button class="button button-calm" style="width:50%" ng-click="support($event)">支持</button>
                     <button class="button button-calm" style="width:50%" ng-click="support($event)">支持</button>
-                    <button class="button button-outline button-calm" style="width:25%">+关注</button>
+                    <button class="button button-outline button-calm" style="width:25%" ng-click="collectionDream()">+收藏</button>
                 </div>
                 </div>
             </div>
             </div>
        
        
@@ -81,7 +86,13 @@
         <div ng-if="type==2" class="hdcontent">
         <div ng-if="type==2" class="hdcontent">
             <div style="border-bottom:5px solid #FAF2F5;">
             <div style="border-bottom:5px solid #FAF2F5;">
                 <div class="list">
                 <div class="list">
-                    <div class="item">
+                    <div class="item itemjs" style="padding: 10px">
+                    <!-- 梦想发布者可以发布梦想互动 -->
+                        <a class="button button-outline button-block button-calm button-icon" ng-click="openModal()">
+                        <i class="icon ion-plus"></i>
+                        发布梦想互动</a>
+                    </div>
+                    <div class="item" ng-click="comment()"> 
                         <img class="head" src="../../img/demo/head2.jpg" />
                         <img class="head" src="../../img/demo/head2.jpg" />
                         <span class="utitle">喵喵喵酱</span>
                         <span class="utitle">喵喵喵酱</span>
                         <span class="utitle kz">剩余5天</span>
                         <span class="utitle kz">剩余5天</span>
@@ -99,25 +110,23 @@
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
-                <div class="list" style="margin-top:-22px;">
-                    <div class="item subitem">
-                        <img ng-src="img/demo/head4.jpg" />
-                        <span>百川</span>
-                        <span class="kz">2016-08-08 11:11</span>
-                        <div>你确定是去哪里了吗?你确定是去哪里了吗?</div>
-                    </div>
+                <div class="list" style="margin-top:-22px;" ng-click="showForm=true; focusInput=true">
                     <div class="item subitem">
                     <div class="item subitem">
                         <img ng-src="img/demo/head4.jpg" />
                         <img ng-src="img/demo/head4.jpg" />
                         <span>百川</span>
                         <span>百川</span>
                         <span class="kz">2016-08-08 11:11</span>
                         <span class="kz">2016-08-08 11:11</span>
                         <div>你确定是去哪里了吗?你确定是去哪里了吗?</div>
                         <div>你确定是去哪里了吗?你确定是去哪里了吗?</div>
                     </div>
                     </div>
-                    <div class="item subitem">
+                    <div class="item subitem" ng-click="replay($event)">
                         <img ng-src="img/demo/head4.jpg" />
                         <img ng-src="img/demo/head4.jpg" />
                         <span>百川</span>
                         <span>百川</span>
                         <span class="kz">2016-08-08 11:11</span>
                         <span class="kz">2016-08-08 11:11</span>
                         <div>你确定是去哪里了吗?你确定是去哪里了吗?</div>
                         <div>你确定是去哪里了吗?你确定是去哪里了吗?</div>
                     </div>
                     </div>
+                     <label class="item item-input">
+                         <input name="comment" type="text" placeholder="{{placeholder}}" ng-model="vm.comment" ng-init="addReplay=false" style="padding: 0 20px;">
+                     </label>
+ 
                 </div>
                 </div>
             </div>
             </div>
             <div style="border-bottom:5px solid #FAF2F5;">
             <div style="border-bottom:5px solid #FAF2F5;">
@@ -166,7 +175,7 @@
         <div ng-if="type==3" class="phbcontent">
         <div ng-if="type==3" class="phbcontent">
             <div class="list">
             <div class="list">
                 <div class="item">
                 <div class="item">
-                    <img style="width:30px" src="../../img/王冠.png" />
+                    <img style="width:30px" src="../../img/king.png" />
                     <span style="padding-left:20px">
                     <span style="padding-left:20px">
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
@@ -178,7 +187,7 @@
                     </span>
                     </span>
                 </div>
                 </div>
                 <div class="item">
                 <div class="item">
-                    <img style="width:30px" src="../../img/王冠.png" />
+                    <img style="width:30px" src="../../img/king.png" />
                     <span style="padding-left:20px">
                     <span style="padding-left:20px">
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
@@ -190,7 +199,7 @@
                     </span>
                     </span>
                 </div>
                 </div>
                 <div class="item">
                 <div class="item">
-                    <img style="width:30px" src="../../img/王冠.png" />
+                    <img style="width:30px" src="../../img/king.png" />
                     <span style="padding-left:20px">
                     <span style="padding-left:20px">
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
@@ -202,7 +211,7 @@
                     </span>
                     </span>
                 </div>
                 </div>
                 <div class="item">
                 <div class="item">
-                    <img style="width:30px" src="../../img/王冠.png" />
+                    <img style="width:30px" src="../../img/king.png" />
                     <span style="padding-left:20px">
                     <span style="padding-left:20px">
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
@@ -214,7 +223,7 @@
                     </span>
                     </span>
                 </div>
                 </div>
                 <div class="item">
                 <div class="item">
-                    <img style="width:30px" src="../../img/王冠.png" />
+                    <img style="width:30px" src="../../img/king.png" />
                     <span style="padding-left:20px">
                     <span style="padding-left:20px">
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <img style="width:40px;border-radius:100%" src="../../img/demo/head4.jpg" />
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
                         <span style="position:relative;top:-20px">喵喵喵酱</span>
@@ -228,6 +237,73 @@
             </div>
             </div>
             
             
         </div>
         </div>
+
+     <script id="interaction-modal.html" type="text/ng-template">
+      <div class="modal">
+        <ion-header-bar class="bar-calm bar bar-header has-tabs-top">
+          <h1 class="title">发布梦想互动</h1>
+        <button class="button button-clear" ng-click="closeModal()">关闭</button>
+        </ion-header-bar>
+        <ion-content>
+          <div class="addcontent list">
+            <div class="item">我的梦想互动信息</div>
+            <div class="item itemjs">
+                <textarea rows="4" cols="50" placeholder="添加梦想互动信息" ng-model="ivm.content" style="border: 1px solid #FF4B82;padding: 10px;width: 98%;"></textarea>
+            </div>
+            <div class="item">上传图片,让别人更好的了解你的梦想</div>
+            <div class="item itemjs">
+                <a ng-repeat="item in iimgs" ng-click="showImages(iimgServer+item)" class="img-file-up">
+                    <b style="background-image:url({{iimgServer+item}});"><em ng-click="deletefile(item)" class="ion-ios-close-outline"></em></b>
+                </a>
+                <a class="btn-file-up" ng-click="addpict()"><i class="ion-image"></i>添加图片</a>
+            </div>
+
+        </div>
+        <div class="padding">
+            <button type="submit"  class="button button-full button-calm" ng-click="add()">
+                发布梦想互动
+            </button>
+        </div>
+        </ion-content>
+      </div>
+    </script>
+    <script id="recharge-modal.html" type="text/ng-template">
+      <div class="modal">
+        <ion-header-bar class="bar-calm bar bar-header has-tabs-top">
+          <h1 class="title">充值</h1>
+        <button class="button button-clear" ng-click="closeRechargeModal()">关闭</button>
+        </ion-header-bar>
+        <ion-content>
+              <div class="list">
+                    <div class="item" style="padding:20px">
+                        <span><i class="icon ion-ios-star-outline calm re-border"></i>剩余梦想币</span>
+                        <div class="re-num">50000</div>
+                    </div>
+                    <div class="item item-input">
+                        <span class="input-label">金额</span>
+                        <input type="number" placeholder="请输入充值金额" ng-model="vm.money" >
+                    </div>
+                    <div class="item item-divider">
+                       请选择以下支付方式
+                    </div>
+                    <ion-list class="re-radio">
+                        <ion-radio ng-model="choice" ng-value="'A'">
+                            <img ng-src="img/alipay.png" />
+                            <span>支付宝支付</span> 
+                        </ion-radio>
+                        <ion-radio ng-model="choice" ng-value="'B'">
+                        <img ng-src="img/weixinpay.png" /><span>微信支付</span>
+                          </ion-radio>
+                    </ion-list>
+                </div>
+                <div class="padding">
+                    <button  class="button button-full button-calm" ng-click="recharge(vm.money)">
+                        支付
+                    </button>
+                </div>
+        </ion-content>
+      </div>
+    </script>
     </ion-content>
     </ion-content>
     <div class="detail-like" ng-if="tosupport">
     <div class="detail-like" ng-if="tosupport">
         <div>
         <div>
@@ -262,34 +338,11 @@
             
             
         </div>
         </div>
         <div class="send">
         <div class="send">
-            <span>余额:<i class="calm">20000</i>梦想币</span>
-            <span  style="padding:30px" class="calm"><i class="icon ion-card"></i>充值</span>
-            <a class="button button-calm" style="height:100%;border-radius:0;width:80px;font-size:1.2em " ng-click="supportDream()">发送</a>
+            <span>余额:<i class="calm">20000</i> 梦想币</span> 
+            <span class="calm" ng-click="openRechargeModal()"><i class="icon ion-card"></i>充值</span>
+            <span style="height:100%;float: right;">
+            <a style="border-radius:0;width:80px;font-size:1.2em;" class="button button-calm"  ng-click="supportDream()">发送</a>
+            </span>
         </div>
         </div>
     </div>
     </div>
-    <script>
-        function show(){
-            alert("lll");
-            var box = document.getElementById("box");
-            var text = box.innerHTML;
-            var newBox = document.createElement("div");
-            var btn = document.createElement("a");
-            newBox.innerHTML = text.substring(0,200);
-            btn.innerHTML = text.length > 200 ? "...显示全部" : "";
-            btn.href = "###";
-            btn.onclick = function(){
-                if (btn.innerHTML == "...显示全部"){
-                    btn.innerHTML = "收起";
-                    newBox.innerHTML = text;
-                }else{
-                    btn.innerHTML = "...显示全部";
-                    newBox.innerHTML = text.substring(0,200);
-                }
-            }
-            box.innerHTML = "";
-            box.appendChild(newBox);
-            box.appendChild(btn);
-        }
-        show();
-    </script>
 </ion-view>
 </ion-view>

+ 5 - 9
miaomiao/www/templates/home/index.html

@@ -26,24 +26,20 @@
         </div>
         </div>
         <div class="icontent">
         <div class="icontent">
             <ion-slides   options="data.sliderOptions" slider="data.sliderDelegate">
             <ion-slides   options="data.sliderOptions" slider="data.sliderDelegate">
-                <ion-slide-page ng-repeat="img in index.banner">
-                    <div class="box banner"><img ng-src="{{img.value}}" /></div>  
+                <ion-slide-page ng-repeat="banner in index.banners">
+                    <div class="box banner"><img ng-src="{{banner.value}}" /></div>  
                 </ion-slide-page>
                 </ion-slide-page>
             </ion-slides>
             </ion-slides>
              
              
             <div class="item item-image" style="margin: 20px 0; border: none;">
             <div class="item item-image" style="margin: 20px 0; border: none;">
                 <i class="icon ion-ios-arrow-left" style="font-size: 1.5rem;"></i>
                 <i class="icon ion-ios-arrow-left" style="font-size: 1.5rem;"></i>
                 <span class="subcontent">
                 <span class="subcontent">
-                    <img ng-src="img/demo/head1.jpg" />
-                    <img ng-src="img/demo/head2.jpg" />
-                    <img ng-src="img/demo/head3.jpg" />
-                    <img ng-src="img/demo/head4.jpg" />
-                    <img ng-src="img/demo/head5.jpg" />
+                    <img ng-src="{{user.dream_user.pic}}" ng-repeat="user in index.users"/>
                 </span>
                 </span>
                 <i class="icon ion-ios-arrow-right" style="font-size: 1.5rem"></i>
                 <i class="icon ion-ios-arrow-right" style="font-size: 1.5rem"></i>
             </div>
             </div>
             <div class="list">
             <div class="list">
-                <div class="item mainitem" ng-click="todetail()" ng-repeat="item in index.dreams">
+                <div class="item mainitem" ng-click="toDetail(item.id)" ng-repeat="item in index.dreams">
                     <div class="row">
                     <div class="row">
                         <div class="col">
                         <div class="col">
                             <img ng-src="{{item.dream_user.pic}}" />
                             <img ng-src="{{item.dream_user.pic}}" />
@@ -58,7 +54,7 @@
                                 <span class="calm">{{item.care_num}}</span>
                                 <span class="calm">{{item.care_num}}</span>
                                 <span>人关注</span>
                                 <span>人关注</span>
                             </div>
                             </div>
-                            <div class="mysecond">剩余{{item.time}}天</div>
+                            <div  class="mysecond">剩余{{item.time}}天</div>
                         </div>
                         </div>
                     </div>
                     </div>
                         <img ng-src="{{item.dream_imgs_first.pic}}" />
                         <img ng-src="{{item.dream_imgs_first.pic}}" />

+ 10 - 9
miaomiao/www/templates/my/index.html

@@ -2,23 +2,23 @@
     <ion-content>
     <ion-content>
         <div class="user-box">
         <div class="user-box">
          
          
-            <div class="myinfo" ng-click="toprofile()">
-                <img ng-src="img/demo/head5.jpg" />
+            <div class="myinfo" ng-click="setAvator()">
+                <img ng-src=" {{user.pic}}" />
                 <div>
                 <div>
-                    喵喵喵喵酱
+                    {{user.nickname}}
                 </div>
                 </div>
-                <div style="font-size:0.7rem">上海市</div>
+                <div style="font-size:0.7rem"> {{user.city}}</div>
             </div>
             </div>
             
             
            <div class="row user-row">
            <div class="row user-row">
-               <div class="col"><i class="icon ion-heart"></i> 关注&nbsp;&nbsp;123456</div>
-               <div class="col"><i class="icon ion-person"></i> 粉丝&nbsp;&nbsp;123456</div>
-               <div class="col"><i class="icon ion-ios-film"></i> 徽章&nbsp;&nbsp;23</div>
+               <div class="col"><i class="icon ion-heart"></i> 关注&nbsp;&nbsp;{{user.care_num}}</div>
+               <div class="col"><i class="icon ion-person"></i> 粉丝&nbsp;&nbsp;{{user.fans_num}}</div>
+               <div class="col"><i class="icon ion-ios-film"></i> 梦想&nbsp;&nbsp;{{user.dream_num}}</div>
            </div>
            </div>
         </div>
         </div>
         <div class="row user-dz">
         <div class="row user-dz">
             <div class="col">
             <div class="col">
-                <div class="num">1231</div>
+                <div class="num">{{user.collection_num}}</div>
                 <div class="mysecond">收藏</div>
                 <div class="mysecond">收藏</div>
             </div>
             </div>
             <div class="col">
             <div class="col">
@@ -38,7 +38,8 @@
             <a class="item item-icon-left" ui-sref="app.my_recharge">
             <a class="item item-icon-left" ui-sref="app.my_recharge">
                 <i class="icon ion-card"></i>
                 <i class="icon ion-card"></i>
                 <em class="fl">账户余额</em>
                 <em class="fl">账户余额</em>
-                <i class="fr">9990</i>
+                <i class="fr">
+                    {{user.coin}}</i>
             </a>
             </a>
             <a class="item item-icon-left" ui-sref="app.my_message">
             <a class="item item-icon-left" ui-sref="app.my_message">
                 <i class="icon ion-email"></i>
                 <i class="icon ion-email"></i>

+ 1 - 1
miaomiao/www/templates/my/my-collect.html

@@ -3,7 +3,7 @@
         <div class="list list-inset collect-search">
         <div class="list list-inset collect-search">
             <div class="item item-input">
             <div class="item item-input">
                 <i class="icon ion-search placeholder-icon"></i>
                 <i class="icon ion-search placeholder-icon"></i>
-                <input type="text" placeholder="Search">
+                <input type="text" placeholder="搜索" ng-model="vm.keyword">
             </div>
             </div>
         </div>
         </div>
         <div class="subcontent">
         <div class="subcontent">

+ 7 - 42
miaomiao/www/templates/my/my-dream.html

@@ -1,54 +1,19 @@
 <ion-view view-title="我的梦想">
 <ion-view view-title="我的梦想">
     <ion-content>
     <ion-content>
        <div class="list">
        <div class="list">
-           <div class="item reply-item">
+           <div class="item reply-item" ng-repeat="dream in dreams" ng-click="toDetail(dream.id)">
                <div class="item item-thumbnail-left reply-content">
                <div class="item item-thumbnail-left reply-content">
-                   <img ng-src="img/demo/head7.jpg" />
-                   <h2>有人能带我去瑞典吗?</h2>
-                   <p>在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!</p>
+                   <img ng-src="{{dream.dream_pic}}" />
+                   <h2>{{dream.dream}}</h2>
+                   <p>{{dream.about}}</p>
                </div>
                </div>
                <div class="reply-bar">
                <div class="reply-bar">
-                   <div style="width: 30%;">
+                   <div style="width: {{dream.progress}}%;">
                    </div>
                    </div>
                </div>
                </div>
-               <div class="reply-sx"><span class="calm">30%</span> 目前实现</div>
-           </div>
-           <div class="item reply-item">
-               <div class="item item-thumbnail-left reply-content">
-                   <img ng-src="img/demo/head7.jpg" />
-                   <h2>有人能带我去瑞典吗?</h2>
-                   <p>在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!</p>
-               </div>
-               <div class="reply-bar">
-                   <div style="width: 30%;">
-                   </div>
-               </div>
-               <div class="reply-sx"><span class="calm">30%</span> 目前实现</div>
-           </div>
-           <div class="item reply-item">
-               <div class="item item-thumbnail-left reply-content">
-                   <img ng-src="img/demo/head7.jpg" />
-                   <h2>有人能带我去瑞典吗?</h2>
-                   <p>在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!</p>
-               </div>
-               <div class="reply-bar">
-                   <div style="width: 30%;">
-                   </div>
-               </div>
-               <div class="reply-sx"><span class="calm">30%</span> 目前实现</div>
-           </div>
-           <div class="item reply-item">
-               <div class="item item-thumbnail-left reply-content">
-                   <img ng-src="img/demo/head7.jpg" />
-                   <h2>有人能带我去瑞典吗?</h2>
-                   <p>在斯德哥尔摩,那个只有黑白和灰色的咖啡馆里面坐下,喝一杯地道的北欧咖啡。享受难得的北欧时光!</p>
-               </div>
-               <div class="reply-bar">
-                   <div style="width: 30%;">
-                   </div>
-               </div>
-               <div class="reply-sx"><span class="calm">30%</span> 目前实现</div>
+               <div class="reply-sx"><span class="calm">{{dream.progress}}%</span> 目前实现</div>
            </div>
            </div>
+           
        </div>
        </div>
     </ion-content>
     </ion-content>
 </ion-view>
 </ion-view>

+ 5 - 1
miaomiao/www/templates/my/my-profile.html

@@ -14,6 +14,10 @@
              <i style="float:right" class="ng-binding">{{vm.tel}}</i>
              <i style="float:right" class="ng-binding">{{vm.tel}}</i>
          </div>
          </div>
 
 
+         <label class="item item-input ">
+             <span class="input-label">昵称</span>
+             <input name="signture" type="text" placeholder="请输入" ng-model="vm.nickname">
+         </label>
          <label class="item item-input item-select item-select-width">
          <label class="item item-input item-select item-select-width">
              <span class="input-label">
              <span class="input-label">
                  性别
                  性别
@@ -32,7 +36,7 @@
              <span class="input-label">
              <span class="input-label">
                  情感状态
                  情感状态
              </span>
              </span>
-             <select name="emotion" ng-model="vm.emotion+''">
+             <select name="emotion" ng-model="vm.emotion">
                  <option value="1">未婚</option>
                  <option value="1">未婚</option>
                  <option value="2">已婚</option>
                  <option value="2">已婚</option>
                  <option value="3">离异</option>
                  <option value="3">离异</option>

+ 2 - 2
miaomiao/www/templates/my/my-recharge.html

@@ -12,7 +12,7 @@
             </div>
             </div>
             <div class="item item-input">
             <div class="item item-input">
                 <span class="input-label">金额</span>
                 <span class="input-label">金额</span>
-                <input type="text" placeholder="请输入充值金额">
+                <input type="number" placeholder="请输入充值金额" ng-model="vm.money" >
             </div>
             </div>
             <div class="item item-divider">
             <div class="item item-divider">
                请选择以下支付方式
                请选择以下支付方式
@@ -28,7 +28,7 @@
             </ion-list>
             </ion-list>
         </div>
         </div>
         <div class="padding">
         <div class="padding">
-            <button  class="button button-full button-calm" ng-click="recharge()">
+            <button  class="button button-full button-calm" ng-click="recharge(vm.money)">
                 支付
                 支付
             </button>
             </button>
         </div>
         </div>

+ 2 - 2
miaomiao/www/templates/tabs.html

@@ -1,11 +1,11 @@
 <ion-tabs class="tabs-icon-top tabs-color-active-calm">
 <ion-tabs class="tabs-icon-top tabs-color-active-calm">
-    <ion-tab title="首页" icon-off="ion-ios-home-outline" icon-on="ion-ios-home" ng-click="myIndex()">
+    <ion-tab title="首页" icon-off="ion-ios-home-outline" icon-on="ion-ios-home" ng-click="go('app.home')">
         <ion-nav-view name="app-home"></ion-nav-view>
         <ion-nav-view name="app-home"></ion-nav-view>
     </ion-tab>
     </ion-tab>
     <ion-tab class="tab-item-add" icon="ion-ios-plus"  ui-sref="app.add" >
     <ion-tab class="tab-item-add" icon="ion-ios-plus"  ui-sref="app.add" >
         <ion-nav-view name="app-add"></ion-nav-view>
         <ion-nav-view name="app-add"></ion-nav-view>
     </ion-tab>
     </ion-tab>
-    <ion-tab title="我的" icon-off="ion-ios-person-outline" icon-on="ion-ios-person" ng-click="myMes()">
+    <ion-tab title="我的" icon-off="ion-ios-person-outline" icon-on="ion-ios-person" ng-click="go('app.my')">
         <ion-nav-view name="app-my"></ion-nav-view>
         <ion-nav-view name="app-my"></ion-nav-view>
     </ion-tab>
     </ion-tab>
 </ion-tabs>
 </ion-tabs>

+ 70 - 0
server/app/Helper/LogHelper.php

@@ -0,0 +1,70 @@
+<?php
+namespace App\Http\HelperTraits;
+
+use App\Models\AccountLog;
+
+trait LogHelper
+{
+    /**
+     * account log记录
+     * @param $data
+     * @return AccountLog
+     * @throws \Exception
+     */
+//    public function writeAccountLog($data) {
+//        if (!isset($data['obj_type']) || empty($data['obj_type'])) {
+//            throw new \Exception('obj_type must be supplied and cannot be empty');
+//        }
+//        if (!isset($data['obj_id']) || empty($data['obj_id'])) {
+//            throw new \Exception('obj_id must be supplied and cannot be empty');
+//        }
+//        if (!isset($data['direction'])) {
+//            $data['direction'] = 1;
+//        }
+//        if ($data['direction'] != 1 && $data['direction'] != 2) {
+//            throw new \Exception('direction must be 1 or 2');
+//        }
+//        if (isset($data['vm_type']) && !array_key_exists($data['vm_type'], AccountLog::getAllType())) {
+//            throw new \Exception('vm_type invalid');
+//        }
+//        if (isset($data['channel']) && !array_key_exists($data['channel'], AccountLog::getAllChannels())) {
+//            throw new \Exception('channel invalid');
+//        }
+//        if (isset($data['op']) && !array_key_exists($data['op'], AccountLog::getAllop())) {
+//            throw new \Exception('op invalid');
+//        }
+//
+//        return AccountLog::create($data);
+//    }
+//
+//    public function logAccount($objType, $objId, $objName, $op, $vmType, $amount, $direction, $balance, $channel, $note = null) {
+//        return $this->writeAccountLog([
+//            'obj_type'      => $objType,
+//            'obj_id'        => $objId,
+//            'obj_name'      => $objName,
+//            'vm_type'       => $vmType,
+//            'amount'        => $amount,
+//            'balance'       => $balance,
+//            'direction'     => $direction,
+//            'op'            => $op,
+//            'channel'       => $channel,
+//            'note'          => $note,
+//        ]);
+//    }
+
+    private function logAccount($fromType, $fromId, $fromName, $fromAmount,  $op, $toType, $toId, $toName, $toAmount) {
+        return AccountLog::create([
+            'from_type'     => $fromType,
+            'from_id'       => $fromId,
+            'from_name'     => $fromName,
+            'from_amount'   => $fromAmount,
+            'op'            => $op,
+            'to_type'       => $toType,
+            'to_id'         => $toId,
+            'to_name'       => $toName,
+            'to_amount'     => $toAmount,
+        ]);
+    }
+
+
+}

+ 1 - 0
server/app/Http/Controllers/Api/V1/AttachmentController.php

@@ -105,6 +105,7 @@ class AttachmentController extends Controller
             'image/png',
             'image/png',
             'image/gif',
             'image/gif',
             'video/mp4',
             'video/mp4',
+            'video/quicktime',
         ]);
         ]);
         if (is_array($result)) {
         if (is_array($result)) {
             return $this->api($result);
             return $this->api($result);

+ 63 - 0
server/app/Http/Controllers/Api/V1/AuthController.php

@@ -230,6 +230,69 @@ class AuthController extends Controller
         ]);
         ]);
     }
     }
 
 
+    /**
+     * @api {post} /api/auth/avatar 上传头像(avatar)
+     * @apiDescription 上传头像(reset)
+     * @apiGroup Auth
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {File} avatar 头像图片
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+     * {
+     *     "state": true,
+     *     "code": 0,
+     *     "message": "",
+     *     "data": {
+     *         "md5": "fdf8dd78eb383b8acf6d94d4752c1424",
+     *     }
+     * }
+     * @apiErrorExample {json} Error-Response:
+     * HTTP/1.1 400 Bad Request
+     * {
+     *     "state": false,
+     *     "code": 1000,
+     *     "message": "传入参数不正确",
+     *     "data": null or []
+     * }
+     * 可能出现的错误代码:
+     *    200     SAVE_USER_FAILED                保存用户数据失败
+     *    201     ATTACHMENT_MKDIR_FAILED         创建附件目录失败
+     *    202     ATTACHMENT_UPLOAD_INVALID       上传附件文件无效
+     *    203     ATTACHMENT_SAVE_FAILED          保存附件失败
+     *    204     ATTACHMENT_MOVE_FAILED          移动附件失败
+     *    205     ATTACHMENT_DELETE_FAILED        删除附件文件失败
+     *    206     ATTACHMENT_RECORD_DELETE_FAILED 删除附件记录失败
+     *    1000    CLIENT_WRONG_PARAMS             传入参数不正确
+     *    1101    INCORRECT_VERIFY_CODE           输入验证码错误
+     *    1105    USER_DOES_NOT_EXIST             用户不存在
+     *    1200    ATTACHMENT_UPLOAD_FAILED        附件上传失败
+     *    1201    ATTACHMENT_SIZE_EXCEEDED        附件大小超过限制
+     *    1202    ATTACHMENT_MIME_NOT_ALLOWED     附件类型不允许
+     *    1203    ATTACHMENT_NOT_EXIST            附件不存在
+     */
+    public function avatar(Request $request) {
+//        $user = Auth::user();
+        $user = $this->getUser();
+        $old_avatar = $user->avatar;
+        $result = $this->uploadAttachment($request, 'avatar', 'avatar', 4 * 1024 * 1024, [
+            'image/jpeg',
+            'image/png',
+            'image/gif',
+        ]);
+        if (is_array($result)) {
+            $result = array_shift($result);
+        }
+        if (is_string($result)) {
+            $user->avatar = $result;
+            if (!$user->save()) {
+                return $this->error(ErrorCode::SAVE_USER_FAILED);
+            }
+            $this->deleteAttachment($old_avatar);
+            return $this->api(['md5' => $result]);
+        }
+        return $this->error($result);
+    }
 
 
 
 
 }
 }

+ 418 - 0
server/app/Http/Controllers/Api/V1/DreamController.php

@@ -0,0 +1,418 @@
+<?php
+
+namespace App\Http\Controllers\Api\V1;
+
+use App\Models\AccountLog;
+use App\Models\BaseSettingsModel;
+use App\Models\DreamImages;
+use App\Models\DreamInfoModel;
+use App\Models\InteractionInfo;
+use App\Models\SupportDreamModel;
+use App\Models\SystemInfoModel;
+use App\Models\UserCareDream;
+use App\Models\UserInfoModel;
+use Illuminate\Http\Request;
+use App\Services\Base\ErrorCode;
+
+class DreamController extends Controller
+{
+    /**
+     * @api {get} /api/dream/show    梦想
+     * @apiDescription 梦想
+     * @apiGroup Dream
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {int} type index interaction paihang  默认all
+     * @apiParam {int} id 梦想ID
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+     *               主页
+     *{
+     *   "status": true,
+     *  "status_code": 0,
+     *  "message": "",
+     *      "data": {
+     *      "dream": {                          梦想
+     *          "id": 7,
+     *          "user_id": 2,
+     *          "dream": "梦想标1123",
+     *          "about": "梦想烧1111213",
+     *          "video": "",
+     *          "sign": null,
+     *          "money": 10000,
+     *          "time": 720000,
+     *          "get_money": 0,
+     *          "status": 0,
+     *          "updated_at": "2017-06-22 09:47:03"
+     *     },
+     *      "imgs": [                          梦想图片
+     *          {
+     *              "title": "",
+     *              "pic": "http://w17.9026.com/img/banner/banner_3.png"
+     *         },
+     *          {
+     *               "title": "",
+     *              "pic": "http://w17.9026.com/img/banner/banner_3.png"
+     *          }
+     *     ],
+     *      "arr": {                            支持者前三(user_idh和头像)
+     *         "1": "http://www.wsfjq.com/photos/bd119684755.jpg",
+     *           "6": "http://www.wsfjq.com/photos/bd119684755.jpg"
+     *      }
+     *       "money" : "1000"    用户余额
+     *       "score" : "1000"    梦想分数
+     *      "a": "0.001",   支持乘数计算  y = -a * b +c   b = updated_at-当前时间  (分钟)   y>=1
+     *      "c": "8"
+     *  }
+     *}
+     *          排行
+     *{
+     *   "status": true,
+     *  "status_code": 0,
+     *   "message": "",
+     *  "data": [
+     *      {
+     *          "nickname": "ha",      昵称
+     *          "pic": "http://www.wsfjq.com/photos/bd119684755.jpg",     头像
+     *          "score": 112000                        支持分
+     *      },
+     *  ]
+     *}
+     *     互动
+     *{
+     *   "status": true,
+     *  "status_code": 0,
+     *  "message": "",
+     *  "data": {
+     *       "data": [
+     *           {
+     *          "id": 7,
+     *          "dream_id": 2,
+     *          "title": "梦想动态有力来了",
+     *          "pic1": "http\"//www.baidu.com",
+     *          "created_at": "2017-06-22 21:09:18",
+     *          "updated_at": "2017-06-22 21:09:18",
+     *          "deleted_at": null,
+     *          "comments": [                          评论
+     *              {
+     *                  "interaction_id": 7,
+     *                  "user_id": 1,
+     *                  "level": 0,
+     *                  "content": "不错的梦想",
+     *                  "updated_at": null,
+     *                 "pic": "http://www.wsfjq.com/photos/bd119684755.jpg",    评论者头像
+     *                 "replay": [                                     回复
+     *                  {
+     *                      "user_id": 1,
+     *                      "level": 0,
+     *                      "content": "我也觉得不错",
+     *                     "updated_at": null,
+     *                     "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"       回复者头像
+     *                  },
+     *                  {
+     *                      "user_id": 6,
+     *                       "level": 0,
+     *                      "content": "祝你梦想成真",
+     *                      "updated_at": null,
+     *                      "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"
+     *                  }
+     *              }
+     *          ]
+     *       ]
+     *  },
+     *  "times": 720000                    梦想实现倒计时(s)
+     *  }
+     *}
+     * @apiErrorExample {json} Error-Response:
+     *HTTP/1.1 400 Bad Request
+     *{
+     *  "status": false,
+     *  "status_code": 1105,
+     *  "message": "用户不存在",
+     *  "data": null
+     * }
+     */
+    public function show(Request $request)
+    {
+        $user = $this->getUser();
+        $type = $request->type;    //类型
+        $id = $request->id;    //梦想ID
+        if (empty($id)) return $this->error(ErrorCode::KEY_ERROR);
+
+        $info = SupportDreamModel::where('dream_id',$id)->get();
+        $top = [] ;
+        $topuser = [];
+        $top3user = [];
+        foreach ($info as $item) {
+            if (!array_key_exists($item->user_id,$top)) {
+                $top[$item->user_id] = $item->score;
+            }else{
+                $top[$item->user_id] += $item->score;
+            }
+        }
+        arsort($top);
+        foreach ($top as $user_id => $score){
+            $user = UserInfoModel::find($user_id);
+            $user->score = $score;
+            $topuser[] = $user;
+            if(count($top3user)<=2)$top3user[] = $user;
+        }
+        if ($type == 'paihang') return $this->api($topuser);
+
+        $interactios = InteractionInfo::where('dream_id',$id)->orderBy('id','desc')->get();
+        foreach ($interactios as $item) {
+            $item->comments = $item->comments;
+            foreach ($item->comments as $comment) {
+                $comment->pic = UserInfoModel::find($comment->user_id)->pic;
+                $comment->replay = $comment->replay;
+                foreach ($comment->replay as $k1 => $v1){
+                    $v1->pic =  UserInfoModel::find($v1->user_id)->pic;
+                }
+            }
+        }
+        if ($type == 'interaction') return $this->api(compact('data'));
+//            梦想  图片  支持者前三    支持乘数参数    用户余额   梦想分数
+
+//            $money = $user->money;
+        $number = BaseSettingsModel::where('category','score')->select('key','value')->first();
+        $a = count($number) > 0 ? $number->key : '';
+        $c = count($number) > 0 ? $number->value : '';
+        $dream = DreamInfoModel::with(['dreamImgs','dreamUser'])->find($id);
+//            $imgs = DreamImages::where('dream_id',$id)->orderBy('id','desc')->get();
+//        $info = SupportDreamModel::where('dream_id',$id)->get();
+        $top3 = [] ;
+        $score = 0 ;
+        foreach ($info as $item) {
+            $score += $item->score;
+            if (!array_key_exists($item->user_id,$top3)) {
+                $top3[$item->user_id] = $item->score;
+            }else{
+                $top3[$item->user_id] += $item->score;
+            }
+        }
+        arsort($top3);
+        foreach ($top3 as $k => $v){
+            $user = UserInfoModel::find($k);
+            if($user)
+            $top3[$k] = $user->pic;
+        }
+        return $this->api(compact('dream','top3user','a','c','score','topuser'));
+    }
+
+    /**
+     * @api {post} /api/dream/support 支持梦想
+     * @apiDescription 支持梦想
+     * @apiGroup Dream
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {int} coin 支持梦想币数量
+     * @apiParam {int} id 梦想ID
+     * @apiParam {int} number 支持乘数
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+     *{
+     *      "status": true,
+     *      "status_code": 0,
+     *      "message": "",
+     *      "data": ""
+     *}
+     * @apiErrorExample {json} Error-Response:
+     *HTTP/1.1 400 Bad Request
+     * {
+     *     "state": false,
+     *     "code": 1000,
+     *     "message": "传入参数不正确",
+     *     "data": null or []
+     * }
+     *  可能出现的代码
+     * {
+     *       "status": false,
+     *       "status_code": 1303,
+     *       "message": "商户余额不足",
+     *       "data": null
+     *  }
+     *
+     */
+    public function support(Request $request)
+    {
+        $validator = \Validator::make($request->all(),
+            [
+                'coin'  => 'required',
+                'id'  => 'required',
+            ],
+            [
+                'coin.required'  => '梦想币不能为空',
+                'id.required'  => '支持梦想不能为空',
+            ]
+        );
+        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
+        $user = $this->getUser();
+        $dream_id = $request->id;
+        $dream_info = DreamInfoModel::find($dream_id);
+        $user_id = $dream_info->user_id;
+        $coin = $request->coin;
+
+        $setting = BaseSettingsModel::where('category','score')->select('key','value')->first();
+        $a = count($setting) > 0 ? $setting->key : '';
+        $c = count($setting) > 0 ? $setting->value : '';
+        //Todo 支持乘数目公式
+        $number = 2;
+
+        if ($user->money < $coin) {
+            return $this->error(ErrorCode::COIN_NOT_ENOUGH);
+        }else{
+            $user->money  =  $user->money - $coin;
+            $user->save();
+            $dream_info->get_money += $coin;
+            $dream_info->save();
+            $data = [
+                'user_id'=>$user->id,
+                'dream_id'=>$dream_id,
+                'dream_user_id'=>$user_id,
+                'coin'=>$coin,
+                'score'=>$coin*$number,
+            ];
+            $ok =   SupportDreamModel::create($data);
+            if (!$ok) {
+                return $this->error(ErrorCode::MERCHANT_SERVICE_STATUS_INVALID);
+            }
+            //                记录充值记录     新增系统消息
+            $data = [
+                'from_id' =>$user->id,
+                'to_id' => $user_id,
+                'from_amount' => $coin,
+                'to_amount' => $coin,
+                'from_type' => AccountLog::TYPE_COIN,
+                'to_type' =>  AccountLog::TYPE_COIN,
+                'op' =>  AccountLog::OP_SUPPORT,
+            ];
+            AccountLog::create($data);
+            $message = UserInfoModel::find($user->id)->nickname.'为你的梦想捐赠'.$coin.'梦想币';
+            $info = [
+                'user_id' => $user_id,
+                'message' => $message,
+            ];
+            SystemInfoModel::create($info);
+
+            return $this->api($number);
+        }
+    }
+
+//    收藏关注梦想
+    /**
+     * @api {get} /api/dream/collection 收藏梦想
+     * @apiDescription 收藏梦想
+     * @apiGroup Dream
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {int} id 梦想ID
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+     *{
+     *      "status": true,
+     *      "status_code": 0,
+     *      "message": "",
+     *      "data": ""
+     *}
+     * @apiErrorExample {json} Error-Response:
+     *HTTP/1.1 400 Bad Request
+     * {
+     *     "state": false,
+     *     "code": 1000,
+     *     "message": "传入参数不正确",
+     *     "data": null or []
+     * }
+     *
+     */
+    public function collection(Request $request)
+    {
+
+        $validator = \Validator::make($request->all(),
+            [
+                'id'  => 'required',
+            ],
+            [
+                'id.required'  => '支持梦想不能为空',
+            ]
+        );
+        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
+
+        $user = $this->getUser();
+        $data = [
+            'user_id' =>$user->id,
+            'dream_id' =>$request->id,
+            'dream_user_id' =>DreamInfoModel::find($request->id)->user_id,
+        ];
+        $info = UserCareDream::where('user_id',$user->id)->
+            where('dream_id',$request->id)->first();
+        if (count($info) == 0) {
+           UserCareDream::create($data);
+        }
+        return $this->api('');
+
+    }
+
+//    发布关于梦想的动态
+    /**
+     * @api {post} /api/dream/add_info 新增动态
+     * @apiDescription 新增动态
+     * @apiGroup Dream
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {int} id 梦想ID
+     * @apiParam {string} title 梦想标题
+     * @apiParam {array} pics[] 图片数组
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+     *{
+     *      "status": true,
+     *      "status_code": 0,
+     *      "message": "",
+     *      "data": ""
+     *}
+     * @apiErrorExample {json} Error-Response:
+     *HTTP/1.1 400 Bad Request
+     * {
+     *     "state": false,
+     *     "code": 1000,
+     *     "message": "传入参数不正确",
+     *     "data": null or []
+     * }
+     *
+     */
+    public function addInfo(Request $request)
+    {
+        $validator = \Validator::make($request->all(),
+            [
+                'id'  => 'required',
+                'title'  => 'required',
+            ],
+            [
+                'dream_id.required'  => '梦想ID不能为空',
+                'title.required'  => '动态标题不能为空',
+            ]
+        );
+
+        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
+        $pics = $request->pics;
+        if (empty($pics) || !is_array($pics)) {
+            return $this->error(ErrorCode::ATTACHMENT_NOT_EXIST);
+        }
+        $data = [];
+        foreach ($pics as $k => $pic) {
+            $data['pic'.($k+1)] = $pic;
+        }
+        $dream_id = $request->id;
+        $title = $request->title;
+        $data['dream_id'] = $dream_id;
+        $data['title'] = $title;
+        $ok = InteractionInfo::create($data);
+        if ($ok) {
+//            收藏梦想最新动态加一
+            UserCareDream::where('dream_id',$dream_id)->increment('interaction_number',1);
+            return $this->api('');
+        }else{
+            return $this->error(ErrorCode::SAVE_USER_FAILED);
+        }
+    }
+}

+ 33 - 302
server/app/Http/Controllers/Api/V1/HomeController.php

@@ -2,9 +2,11 @@
 
 
 namespace App\Http\Controllers\Api\V1;
 namespace App\Http\Controllers\Api\V1;
 
 
+use App\Models\BaseDictionaryOptionModel;
 use App\Models\BaseSettingsModel;
 use App\Models\BaseSettingsModel;
 use App\Models\DreamImages;
 use App\Models\DreamImages;
 use App\Models\DreamInfoModel;
 use App\Models\DreamInfoModel;
+use App\Models\SupportDreamModel;
 use App\Models\SystemInfoModel;
 use App\Models\SystemInfoModel;
 use App\Models\UserCareUser;
 use App\Models\UserCareUser;
 use App\Models\UserDream;
 use App\Models\UserDream;
@@ -22,33 +24,19 @@ class HomeController extends Controller
      * @apiParam {int} user_id 用户ID
      * @apiParam {int} user_id 用户ID
      * @apiSuccessExample {json} Success-Response:
      * @apiSuccessExample {json} Success-Response:
      * HTTP/1.1 200 OK
      * HTTP/1.1 200 OK
-     * {
-     *  "nickname": "",  名字
-     *  "pic": "",   头像
-     *  "tall": "",  身高
-     *  "job": "",  职业
-     *  "emotion": "1",  情感
-     *  "address": "",地址
-     *  "score": 1000,  支持分
-     *  "care": 4,  关注
-     *  "fens": 3,   粉丝
-     *  "user_dream": [
-     *      "id": 3,
-     *      "dream": "3去旅游",
-     *      "about": "",
-     *      "money": 0,
-     *      "time": 0,
-     *      "get_money": 0,
-     *      "mark": 0,
-     *      "status": 0,
-     *      "pic": [],
-     *      "dream_imgs": []
-     *      "near_dream_pic": [
-     *          {
-     *              "pic": "234"
-     *          },
-     *    ]
+     *{
+     *   "status": true,
+     *   "status_code": 0,
+     *   "message": "",
+     *  "data": {
+     *      "user": {},             用户信息
+     *      "near_dream": {},       当前梦想
+     *      "sup_dreams": [],       支持的梦想
+     *      "all_imgs": [],         封面图片
+     *      "dreams": []            曾经的梦想
+     *      "score": 2000           支持分数
      *  }
      *  }
+     *}
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      *HTTP/1.1 400 Bad Request
      *HTTP/1.1 400 Bad Request
      *{
      *{
@@ -61,302 +49,45 @@ class HomeController extends Controller
     public function index(Request $request)
     public function index(Request $request)
     {
     {
         $user_id = $request->user_id;
         $user_id = $request->user_id;
-        $care = UserCareUser::where('user_id',$user_id)->paginate(20);
-        $fens = UserCareUser::where('other_user_id',$user_id)->paginate(20);
+//        获得的支持分数
+        $info = SupportDreamModel::where('to_user_id',$user_id)->get();
+        $score = 0;
+        foreach ($info as $item) {
+            $score += $item->score;
+        }
+        $care = UserCareUser::where('user_id',$user_id)->get();
+        $fens = UserCareUser::where('other_user_id',$user_id)->get();
         $user = UserInfoModel::find($user_id);
         $user = UserInfoModel::find($user_id);
-        if (count($user == 0)) return $this->error(ErrorCode::USER_DOES_NOT_EXIST);
-        $job = BaseSettingsModel::where(['category' => 'job'])->where(['key' => $user->job])->first();
-        $job = count($job) > 0 ? $job->value : '';
-        $emotion = BaseSettingsModel::where(['category' => 'emotion'])->where(['key' => $user->emotion])->first();
-        $emotion = count($emotion) > 0 ? $emotion->value : '';
+        if (count($user) == 0) return $this->error(ErrorCode::USER_DOES_NOT_EXIST);
+        $emotion = BaseDictionaryOptionModel::where(['dictionary_code' => 'emotion'])->
+            where('dictionary_table_code','user_info')->
+        where(['value' => $user->emotion])->first();
+        $emotion = count($emotion) > 0 ? $emotion->name : '';
 //        当前梦想
 //        当前梦想
-        $near_dream_id = UserDream::where('user_id',$user_id)->orderBy('id','desc')->first()->dream_id;
-        $near_dream =DreamInfoModel::find($near_dream_id);
+        $near_dream =DreamInfoModel::where('user_id',$user->id)->orderBy('id','desc')->first();
 //         封面图片
 //         封面图片
-        $near_dream_pic = DreamImages::where('dream_id',$near_dream_id)->select('pic')->paginate(20);
+        $all_imgs =$user->allImgs;
 //        曾经的梦想
 //        曾经的梦想
         $dreams = $user->UserDream;
         $dreams = $user->UserDream;
 
 
         foreach ($dreams as $dream){
         foreach ($dreams as $dream){
-            $dream->pic = $dream->dreamImgs;
+            $dream->dream_imgs = $dream->dreamImgs;
         }
         }
 
 
         $user->score = 1000;//自定义 算法
         $user->score = 1000;//自定义 算法
         $user->care = count($care);
         $user->care = count($care);
         $user->fens = count($fens);
         $user->fens = count($fens);
-        $user->job = $job;
+        $user->dreams =$dreams;
         $user->emotion = $emotion;
         $user->emotion = $emotion;
 //         支持的梦想
 //         支持的梦想
         $sup_dreams = $user->supDream;
         $sup_dreams = $user->supDream;
 
 
         foreach ($sup_dreams as $sup_dream){
         foreach ($sup_dreams as $sup_dream){
-            $sup_dream->pic = $sup_dream->dreamImgs;
-        }
-
-        return $this->api(compact('user','near_dream','sup_dreams','near_dream_pic'));
-
-    }
-
-    /**
-     * @api {post} /api/user/support 支持梦想
-     * @apiDescription 支持梦想
-     * @apiGroup Home
-     * @apiPermission Passport
-     * @apiVersion 0.1.0
-     * @apiParam {int} coin 支持梦想币数量
-     * @apiParam {int} dream_id 梦想ID
-     * @apiSuccessExample {json} Success-Response:
-     * HTTP/1.1 200 OK
-     *{
-     *      "status": true,
-     *      "status_code": 0,
-     *      "message": "",
-     *      "data": ""
-     *}
-     * @apiErrorExample {json} Error-Response:
-     *HTTP/1.1 400 Bad Request
-     * {
-     *     "state": false,
-     *     "code": 1000,
-     *     "message": "传入参数不正确",
-     *     "data": null or []
-     * }
-     *  可能出现的代码
-     * {
-    *       "status": false,
-    *       "status_code": 1303,
-    *       "message": "商户余额不足",
-    *       "data": null
-    *  }
-     *
-     */
-    public function support(Request $request)
-    {
-        $user = $this->getUser();
-        $dream_id = $request->dream_id;
-        $dream_info = DreamInfoModel::find($dream_id);
-        $validator = \Validator::make($request->all(),
-            [
-                'coin'  => 'required',
-                'dream_id'  => 'required',
-            ],
-            [
-                'coin.required'  => '梦想币不能为空',
-                'dream_id.required'  => '支持对象不能为空',
-            ]
-        );
-
-        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
-
-        $coin = $request->coin;
-
-        if ($user->money < $coin) {
-            return $this->error(ErrorCode::MERCHANT_BALANCE_NOT_ENOUGH);
-        }else{
-            $user->money  =  $user->money - $coin;
-            $user->save();
-            $dream_info->get_money += $coin;
-            $dream_info->save();
-            $data = [
-                'user_id'=>$user->id,
-                'other_id'=>$dream_id,
-                'coin'=>$coin,
-            ];
-
-          $ok =   SystemInfoModel::create($data);
-            if (!$ok) {
-                return $this->error(ErrorCode::MERCHANT_SERVICE_STATUS_INVALID);
-            }
-            return $this->api('');
-        }
-    }
-    /**
-     * @api {get} /api/user/interaction 互动
-     * @apiDescription 互动
-     * @apiGroup Home
-     * @apiPermission Passport
-     * @apiVersion 0.1.0
-     * @apiParam {int} user_id 互动对象ID
-     * @apiSuccessExample {json} Success-Response:
-     * HTTP/1.1 200 OK
-     * {
-     *      "status": true,
-     *      "status_code": 0,
-     *      "message": "",
-     *      "data": {
-     *          评论的梦想
-     *          "dream1": [
-     *              {
-     *                  "dream": "1的梦想",
-     *                  "about": "介绍",
-     *                  "pic": [
-     *                      {
-     *                          "pic": "111",
-     *                      }
-     *          ],
-     *      "user": [
-     *          {
-     *              "pic": "",
-     *       ],
-     *       "comments": [
-     *           {
-     *              "level": 0,
-     *              "content": "EST",
-     *              "created_at": "2017-04-27 12:17:20",
-     *           }
-     *        ],
-     *       回复的梦想
-     *           "dream2": [
-     *               {
-     *                 "level": 0,
-     *                  "content": "EST",
-     *                  "created_at": "2017-04-27 12:17:20",
-     *                  "updated_at": null,
-     *                  "deleted_at": null,
-     *                  "reply_dream": {
-     *                      "dream": "1的梦想",
-     *                      "about": "介绍",
-     *                      "time": 0,
-     *                      "dream_imgs": [
-     *                          {
-     *                              "pic": "111",
-     *                          },
-     *              ]
-     *       },
-     *      "reply_dream_pic": [
-     *          {
-     *              "pic": "111",
-     *          }
-     *       ],
-     *      "reply_created_at": {
-     *           "date": "2017-06-13 02:26:31.000000",
-     *          "timezone_type": 3,
-     *          "timezone": "UTC"
-     *      },
-     *      "reply_content": "haha",
-     *      "reply_level": 0,
-     *      "dream": {
-     *          "dream": "1的梦想",
-     *          "about": "介绍",
-     *          "money": 5000,
-     *          "time": 0,
-     *          "dream_imgs": [
-     *              {
-     *                  "pic": "111",
-     *              },
-     *          ]
-     *       }
-     *   }
-     *  ]
-     *  }
-     * }
-     * @apiErrorExample {json} Error-Response:
-     *HTTP/1.1 400 Bad Request
-     * {
-     *       "status": false,
-     *      "status_code": 1500,
-     *      "message": "会员不存在",
-     *      "data": null
-     * }
-     */
-    public function interaction(Request $request)
-    {
-        $user_id = $request->user_id;
-        $user = UserInfoModel::find($user_id);
-        if (count($user) == 0) return $this->error(ErrorCode::MEMBER_NOT_EXIST);
-//        参与的评论与回复 梦想
-        $dream1 = $user->comDream;
-
-        foreach ($dream1 as $item){
-            $item->pic = $item->dreamImgs;
-            $item->user = $item->dreamUser;
-            $item->comments = $item->DreamInfo;
-            $item->created_at = $item->pivot->created_at;
-            $item->content = $item->pivot->content;
-            $item->level = $item->pivot->level;
+            $sup_dream->pics = $sup_dream->dreamImgs;
         }
         }
 
 
-        $dream2 = $user->replyDream;
+        return $this->api(compact('user','near_dream','sup_dreams','all_imgs','dreams','score'));
 
 
-        foreach ($dream2 as $comment) {
-            $comment->reply_dream = $comment->dream;
-            $comment->reply_dream_pic = $comment->dream->dreamImgs;
-            $comment->reply_created_at = $comment->pivot->created_at;
-            $comment->reply_content = $comment->pivot->content;
-            $comment->reply_level = $comment->pivot->level;
-        }
-
-        return $this->api(compact('dream1','dream2'));
     }
     }
-    /**
-     * @api {post} /api/user/paihang 排行
-     * @apiDescription 排行
-     * @apiGroup Home
-     * @apiPermission Passport
-     * @apiVersion 0.1.0
-     * @apiParam {int} user_id 用户ID
-     * @apiSuccessExample {json} Success-Response:
-     * HTTP/1.1 200 OK
-     *{
-     *    "status": true,
-     *    "status_code": 0,
-     *   "message": "",
-     *   "data": {
-     *       "arr3": [
-     *          {
-     *              "nickname": "",  昵称
-     *              "pic": "",      头像
-     *              "coin": 23      总支持梦想币
-     *          }
-     *      ]
-     *   }
-     *}
-     *
-     * @apiErrorExample {json} Error-Response:
-     *HTTP/1.1 400 Bad Request
-     *{
-     *  "status": false,
-     *  "status_code": 1105,
-     *  "message": "用户不存在",
-     *  "data": null
-     * }
-     */
-
-    public function paihang(Request $request)
-    {
-//      获取支持过用户的人
-        $user_id = $request->user_id;
-        $user = UserInfoModel::find($user_id);
-        if (count($user) == 0) return $this->error(ErrorCode::MEMBER_NOT_EXIST);
-        $dreams = $user->UserDream;
-        $arr1 = [];
-
-        foreach ($dreams as $dream) {
-            $arr1[] = $dream->systemInfo;
-        }
-
-//      用户总的支持梦想币
-        $arr2 = [];
-
-        foreach ($arr1 as $v) {
-            foreach ($v as $item){
-                if (!array_key_exists($item->user_id,$arr2)) {
-                    $arr2[$item->user_id] = $item->coin;
-                }else{
-                    $arr2[$item->user_id] += $item->coin;
-                }
-            }
-        }
-
-        $arr3 = [] ;
 
 
-        foreach ($arr2 as $k => $v){
-            $user = UserInfoModel::find($k);
-            $user->coin = $v;
-            $arr3[] = $user;
-        }
-
-        return $this->api(compact('arr3'));
-
-    }
 }
 }

+ 260 - 120
server/app/Http/Controllers/Api/V1/IndexController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\V1;
 use App\Models\BaseSettingsModel;
 use App\Models\BaseSettingsModel;
 use App\Models\DreamInfoModel;
 use App\Models\DreamInfoModel;
 use App\Models\SearchInfoModel;
 use App\Models\SearchInfoModel;
+use App\Models\UserCareDream;
 use App\Models\UserCareUser;
 use App\Models\UserCareUser;
 use App\Models\UserDream;
 use App\Models\UserDream;
 use App\Models\UserInfoModel;
 use App\Models\UserInfoModel;
@@ -24,52 +25,142 @@ class IndexController extends Controller
      * @apiSuccessExample {json} Success-Response:
      * @apiSuccessExample {json} Success-Response:
      * HTTP/1.1 200 OK
      * HTTP/1.1 200 OK
      *{
      *{
-     *"status": true,
-     *"status_code": 0,
-     *"message": "",
-     *"data": {
-     *      "banner": [],  轮播图
-     *      "users": [          动态用户
-     *                    'news_num':2    新消息数目
-     * ],
-     *       "dreams": {
-     *          "current_page": 1,
-     *           "data": [
+     *   "status": true,
+     *  "status_code": 0,
+     *   "message": "",
+     *   "data": {
+     *       "banner": [            轮播图
+     *          {
+     *              "value": "http://w17.9026.com/img/banner/banner_2.png",
+     *          },
+     *          {
+     *               "value": "http://w17.9026.com/img/banner/banner_3.png",
+     *           },
+     *      ],
+     *   "users": {
+     *      "1": [               1用户ID
+     *          [
+     *              {                                   用户梦想互动
+     *                  "id": 8,
+     *                  "dream_id": 1,
+     *                  "title": "2",
+     *                  "pic1": "www.buniang.com",
+     *                 "pic2": "",
+     *                  "pic3": "",
+     *                 "pic4": "",
+     *                  "pic5": "",
+     *                 "pic6": "",
+     *                  "pic7": "",
+     *                   "pic8": "",
+     *                  "pic9": "",
+     *                  "status": 1,
+     *                  "created_at": "2017-06-23 08:13:39",
+     *                  "updated_at": "2017-06-23 08:13:39",
+     *                  "deleted_at": null,
+     *                  "user_id": 1
+     *              },
      *              {
      *              {
-     *                  "dream": "signture",
-     *                   "about": "123568",
-     *                   "video": "",
-     *                   "money": 162,
-     *                  "time": 2666,
-     *                   "get_money": 0,
-     *                  "status": 0,
-     *                  "updated_at": "2017-06-21 10:51:20",
-     *                   "dream_user":
-     *                       {
-     *                            "pic": "",
-     *                       }
-     *                  ,
-     *                  "care_num": 1,
-     *                  "dream_first_pic": null,
-     *                   "dream_imgs_first": null    封面图片
-     *                   "care_num": 2,
-     *                  "dream_first_pic": null,
-     *                  "dream_imgs_first": null
+     *                  "id": 9,
+     *                  "dream_id": 1,
+     *                  "title": "2haha",
+     *                  "pic1": "www.buniang.com",
+     *                  "pic2": "",
+     *                  "pic3": "",
+     *                  "pic4": "",
+     *                  "pic5": "",
+     *                  "pic6": "",
+     *                  "pic7": "",
+     *                  "pic8": "",
+     *                  "pic9": "",
+     *                  "status": 1,
+     *                  "created_at": "2017-06-23 08:15:01",
+     *                  "updated_at": "2017-06-23 08:15:01",
+     *                 "deleted_at": null,
+     *                  "user_id": 1
+     *              },
+     *          ],
+     *          "http://www.wsfjq.com/photos/bd119684755.jpg"            用户头像
+     *           3                                      新消息条数
+     *      ],
+     *}
+     *      "dreams": {                             梦想列表
+     *      "current_page": 1,
+     *      "data": [
+     *           {
+     *              "id": 1,
+     *               "user_id": 1,
+     *              "dream": "梦想标题",
+     *               "about": "梦想烧",
+     *               "video": "",
+     *               "money": 10000,
+     *              "time": 720000,
+     *              "get_money": 0,
+     *              "status": 0,
+     *              "updated_at": "2017-06-22 09:42:41",
+     *              "dream_user": {                         梦想所有者
+     *               "nickname": "ha",
+     *              "pic": "http://www.wsfjq.com/photos/bd119684755.jpg",
+     *               "money": 123568,
+     *               "sex": 1,
+     *               "signture": "signture",
+     *              "city": "",
+     *              "birthday": "2017-06-21",
+     *               "status": 1,
+     *           },
+     *          "care_num": 1,                        关注人数
+     *          "dream_imgs_first": {                 梦想封面图片
+     *              "title": "",
+     *               "pic": "http://w17.9026.com/img/banner/banner_3.png"
+     *          },
+     *          "dream_detailed": {                    点击进入梦想详情
+     *              "dream_imgs": [
+     *                  {
+     *                      "title": "",
+     *                      "pic": "http://w17.9026.com/img/banner/banner_3.png"
      *                  },
      *                  },
-     *                   }
-     *                   ],
-     *                  "from": 1,
-     *                  "last_page": 1,
-     *                  "next_page_url": null,
-     *                  "path": "http://www.miao.com/api/index/index",
-     *                  "per_page": 20,
-     *                  "prev_page_url": null,
-     *                  "to": 3,
-     *                  "total": 3
-     *              }
-     *          ]
+     *                  {
+     *                      "title": "",
+     *                     "pic": "http://w17.9026.com/img/banner/banner_3.png"
+     *                  }
+     *              ],
+     *              "comments": [
+     *                   {
+     *                      "user_id": 2,
+     *                      "level": 0,
+     *                      "content": "EST评论",
+     *                      "updated_at": null,
+     *                      "pic": "http://www.wsfjq.com/photos/bd119684755.jpg",     评论者头像
+     *                     "replay": [
+     *                         {
+     *                              "user_id": 2,
+     *                              "level": 0,
+     *                              "content": "拉了",
+     *                              "updated_at": null,
+     *                              "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"         回复者头像
+     *                          },
+     *                          {
+     *                              "user_id": 3,
+     *                              "level": 0,
+     *                              "content": "userid3回复了你的消息",
+     *                              "updated_at": null,
+     *                              "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"
+     *                          }
+     *                      ]
+     *                  },
+     *         }
+     *      ]
+     *      },
+     *      "from": 1,
+     *      "last_page": 1,
+     *      "next_page_url": null,
+     *      "path": "http://www.miao.com/api/index/index",
+     *      "per_page": 20,
+     *       "prev_page_url": null,
+     *      "to": 8,
+     *      "total": 8
      *     }
      *     }
-     * }
+     *   }
+     *}
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      * HTTP/1.1 400 Bad Request
      * HTTP/1.1 400 Bad Request
      * {
      * {
@@ -82,30 +173,41 @@ class IndexController extends Controller
     public function index(Request $request)
     public function index(Request $request)
     {
     {
         $user = $this->getUser();
         $user = $this->getUser();
-        //        关注的用户
-        $arr =  $user->UserCareUser;
-        $users = [] ;
-        foreach ($arr as $k => $v){
-            if ($v->pivot->dream_num > 0) {
-                $v->news_num = $v->pivot->dream_num;
-                $users[] = $v;
-            }
-        }
+        //        关注的梦想
+        $users =  $user->UserCareDream;
+//        $arr = UserInfoModel::where('id',$user->id)->whereHas('UserCareDream', function ($query) {
+//            $query->where('interaction_number', '>', 0);
+//        })->get();
+//        dd($arr->toArray());
+//        $users = [] ;
+//        $arr1 = [];
+//        foreach ($arr as $k => $v){
+//            if ($v->pivot->interaction_number > 0) {
+//                if (!array_key_exists($v->pivot->dream_user_id,$arr1)) {
+//                    $arr1[$v->pivot->dream_user_id] = $v->pivot->interaction_number;
+//                }else{
+//                    $arr1[$v->pivot->dream_user_id] += $v->pivot->interaction_number;
+//                }
+//            }
+//        }
+//        dd($arr1);
+//        foreach ($arr1 as $k => $v){
+//            $a = UserInfoModel::find($k);
+//            $users[$k] =[$a->allInteraction,$a->pic,$v] ;
+//        }
         $type = $request->type;
         $type = $request->type;
         if ($type == 'trend') {
         if ($type == 'trend') {
             $dreams = DreamInfoModel::orderBy('score','desc')->offset(20)->limit(100)->paginate(20);
             $dreams = DreamInfoModel::orderBy('score','desc')->offset(20)->limit(100)->paginate(20);
-            $this->dreams($dreams);
             return $this->api(compact('users','dreams'));
             return $this->api(compact('users','dreams'));
         } elseif ($type == 'news') {
         } elseif ($type == 'news') {
             $dreams = DreamInfoModel::orderBy('score','desc')->offset(100)->limit(500)->paginate(20);
             $dreams = DreamInfoModel::orderBy('score','desc')->offset(100)->limit(500)->paginate(20);
-            $this->dreams($dreams);
             return $this->api(compact('users','dreams'));
             return $this->api(compact('users','dreams'));
         } else{
         } else{
-            $banner = $this->getBanner();
+            $banners = $this->getBanner();
     //        获取其他用户信息 及梦想
     //        获取其他用户信息 及梦想
             $dreams = DreamInfoModel::orderBy('score','desc')->limit(20)->paginate(20);
             $dreams = DreamInfoModel::orderBy('score','desc')->limit(20)->paginate(20);
             $this->dreams($dreams);
             $this->dreams($dreams);
-            return $this->api(compact('banner','users','dreams'));
+            return $this->api(compact('banners','users','dreams'));
         }
         }
     }
     }
 
 
@@ -116,7 +218,7 @@ class IndexController extends Controller
      * @apiGroup Index
      * @apiGroup Index
      * @apiPermission none
      * @apiPermission none
      * @apiVersion 0.1.0
      * @apiVersion 0.1.0
-     * @apiParam {string}  keyword   关键字可选
+     * @apiParam {string}  keyword   关键字可选  (ha)
      * @apiSuccessExample {json} Success-Response:
      * @apiSuccessExample {json} Success-Response:
      * HTTP/1.1 200 OK
      * HTTP/1.1 200 OK
      *     get
      *     get
@@ -159,15 +261,15 @@ class IndexController extends Controller
     {
     {
         $user = $this->getUser();
         $user = $this->getUser();
         $keyword ='%'.$request->keyword.'%';
         $keyword ='%'.$request->keyword.'%';
-        $data1 = UserInfoModel::where('nickname','like',$keyword)->paginate(20);
+        $data1 = UserInfoModel::where('nickname','like',$keyword)->get();
         $data2 = DreamInfoModel::where('dream','like',$keyword)->
         $data2 = DreamInfoModel::where('dream','like',$keyword)->
-            orWhere('dream','like',$keyword)->paginate(20);
-        $data3  = BaseSettingsModel::where('category','sign')->where('value','like',$keyword)->paginate(20);
+            orWhere('sign','like',$keyword)->get();
+        $data3  = BaseSettingsModel::where('category','sign')->where('value','like',$keyword)->get();
         if (empty($request->keyword)) {
         if (empty($request->keyword)) {
 //            历史搜索
 //            历史搜索
-                $data1  = $user->search()->orderBy('id','desc')->limit(10)->paginate(20);
+                $data1  = $user->search()->orderBy('id','desc')->limit(10)->get();
 //            热门搜索
 //            热门搜索
-                $data2 = SearchInfoModel::paginate(20);
+                $data2 = SearchInfoModel::get();
                 $arr = [];
                 $arr = [];
                 foreach ($data2 as $k => $v) {
                 foreach ($data2 as $k => $v) {
                     if (count($arr) == 8) {
                     if (count($arr) == 8) {
@@ -182,7 +284,8 @@ class IndexController extends Controller
                 arsort($arr);
                 arsort($arr);
                 return $this->api(compact('arr','data1'));
                 return $this->api(compact('arr','data1'));
         }
         }
-
+//        写入搜索记录
+        $this->insertSearchTable($user->id,$request->keyword);
         return $this->api(compact('data1','data2','data3'));
         return $this->api(compact('data1','data2','data3'));
     }
     }
 
 
@@ -212,12 +315,14 @@ class IndexController extends Controller
      */
      */
     public function userSearch(Request $request)
     public function userSearch(Request $request)
     {
     {
+        $user = $this->getUser();
         if (empty($request->keyword)) {
         if (empty($request->keyword)) {
             return $this->api('');
             return $this->api('');
         }
         }
         $keyword ='%'.$request->keyword.'%';
         $keyword ='%'.$request->keyword.'%';
-        $data1 = UserInfoModel::where('nickname','like',$keyword)->paginate(20);
-          return $this->api(compact('data1'));
+        $data1 = UserInfoModel::where('nickname','like',$keyword)->get();
+        $this->insertSearchTable($user->id,$request->keyword);
+        return $this->api(compact('data1'));
     }
     }
 
 
     /**
     /**
@@ -252,16 +357,18 @@ class IndexController extends Controller
      */
      */
     public function dreamSearch(Request $request)
     public function dreamSearch(Request $request)
     {
     {
+        $user = $this->getUser();
         if (empty($request->keyword)) {
         if (empty($request->keyword)) {
             return $this->api('');
             return $this->api('');
         }
         }
         $keyword ='%'.$request->keyword.'%';
         $keyword ='%'.$request->keyword.'%';
         $data = DreamInfoModel::where('dream','like',$keyword)->
         $data = DreamInfoModel::where('dream','like',$keyword)->
-        orWhere('dream','like',$keyword)->paginate(20);
+        orWhere('sign','like',$keyword)->get();
         foreach ($data as $k => $value) {
         foreach ($data as $k => $value) {
             $value->user_pic = $value->dreamFindUser;
             $value->user_pic = $value->dreamFindUser;
             $value->dream_img = $value->dreamImgsFirst->pic;
             $value->dream_img = $value->dreamImgsFirst->pic;
         }
         }
+        $this->insertSearchTable($user->id,$request->keyword);
         return $this->api(compact('data'));
         return $this->api(compact('data'));
     }
     }
 
 
@@ -269,7 +376,7 @@ class IndexController extends Controller
     public function getBanner()
     public function getBanner()
     {
     {
         $banner =  BaseSettingsModel::where(['category' => 'banner'])->where(['status' => '1'])
         $banner =  BaseSettingsModel::where(['category' => 'banner'])->where(['status' => '1'])
-            ->orderBy('sort')->limit('3')->get()->toArray();
+            ->orderBy('sort')->get()->toArray();
         return $banner;
         return $banner;
     }
     }
 
 
@@ -279,14 +386,14 @@ class IndexController extends Controller
         foreach ($dreams as $k => $dream) {
         foreach ($dreams as $k => $dream) {
             $dream->dream_user =  $dream->dreamUser;
             $dream->dream_user =  $dream->dreamUser;
 //            计算被关注总人数
 //            计算被关注总人数
-            $dream->care_num = 0;
-            $user = UserDream::where('dream_id',$dream->id)->first();
-            if($user){
-                $user_id = $user->user_id;
-                $data = UserCareUser::where('other_user_id',$user_id)->paginate(20);
-                $dream->care_num = count($data);
-            }
-            $dream->dream_img = $dream->dreamImgsFirst?$dream->dreamImgsFirst->pic:'';
+            $user_id =  $dream->user_id;
+            $data = UserCareDream::where('dream_id',$dream->id)->get();
+            $dream->care_num = count($data);
+            $dream->dream_imgs_first = $dream->dreamImgsFirst?$dream->dreamImgsFirst->pic:'';
+//            梦想详情  detailed  图片 ,评论 ,回复
+            $arr = [] ;
+            $arr['dream_imgs'] = $dream->dreamImgs;
+            $dream->dream_detailed = $arr;
         }
         }
     }
     }
 //    查看关注用户的最新动态
 //    查看关注用户的最新动态
@@ -302,42 +409,57 @@ class IndexController extends Controller
      *{
      *{
      *   "status": true,
      *   "status": true,
      *   "status_code": 0,
      *   "status_code": 0,
-     *  "message": "",
-     *   "data": [
-     *       {
-     *          "dream": "1的梦想",
-     *          "about": "介绍",
-     *          "video": "",
-     *          "time": 0,
-     *           "status": 0,
-     *          "updated_at": null,
-     *           "dream_imgs": [
-     *              {
-     *                  "title": "1",    梦想图片介绍
-     *                  "pic": "111",    梦想图片
-     *              },
-     *          ],
-     *           "comments": [
-     *              {
-     *                  "user_id": 2,
-     *                  "level": 0,
-     *                  "content": "评论内容",       评论内容
-     *                  "updated_at": null,
-     *                  "pic": "",         评论者头像
-     *                  "replay": [
-     *                       {
-     *                          "level": 0,
-     *                          "content": "回复内容",   回复内容
-     *                          "updated_at": null,
-     *                          "pic": ""               回复者头像
-     *                      }
-     *                  ]
-     *              }
-     *          ],
-     *          }
-     *          ]
-     *     }
-     *   ]
+     *   "message": "",
+     *  "data": {
+     *      "all_interaction": [                          互动
+     *          {
+     *              "id": 7,
+     *              "dream_id": 2,
+     *              "title": "梦想动态有力来了",
+     *              "pic1": "http\"//www.baidu.com",
+     *              "pic2": "",
+     *               "pic3": "",
+     *              "pic4": "",
+     *              "pic5": "",
+     *              "pic6": "",
+     *              "pic7": "",
+     *              "pic8": "",
+     *              "pic9": "",
+     *              "status": 1,
+     *              "created_at": "2017-06-22 21:09:18",
+     *              "updated_at": "2017-06-22 21:09:18",
+     *              "deleted_at": null,
+     *              "user_id": 2,
+     *              "time": 720000,                           倒计时
+     *              "comments": [                            评论
+     *                  {
+     *                      "interaction_id": 7,
+     *                      "user_id": 1,
+     *                      "level": 0,
+     *                      "content": "不错的梦想",
+     *                      "updated_at": null,
+     *                      "pic": "http://www.wsfjq.com/photos/bd119684755.jpg",
+     *                      "replay": [                       回复
+     *                          {
+     *                              "user_id": 1,
+     *                              "level": 0,
+     *                              "content": "我也觉得不错",
+     *                              "updated_at": null,
+     *                              "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"
+     *                          },
+     *                          {
+     *                              "user_id": 6,
+     *                              "level": 0,
+     *                              "content": "祝你梦想成真",
+     *                              "updated_at": null,
+     *                              "pic": "http://www.wsfjq.com/photos/bd119684755.jpg"
+     *                          }
+     *                      ]
+     *                  }
+     *               ]
+     *          },
+     *      ]
+     *  }
      *}
      *}
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      * HTTP/1.1 400 Bad Request
      * HTTP/1.1 400 Bad Request
@@ -348,19 +470,37 @@ class IndexController extends Controller
         $user = $this->getUser();
         $user = $this->getUser();
         $other_id = $request->id;
         $other_id = $request->id;
         if (empty($other_id))  return $this->error(ErrorCode::MEMBER_NOT_EXIST);
         if (empty($other_id))  return $this->error(ErrorCode::MEMBER_NOT_EXIST);
-        UserCareUser::where('user_id',$user->id)->where('other_user_id',$other_id)->update(['dream_num'=>0]);
-        $data = UserInfoModel::find($other_id)->UserDream;
-        foreach ($data as $item) {
-            $item->dream_imgs =  $item->dreamImgs ;
-            $item->comments = $item->DreamInfo;
-            foreach ( $item->comments as $k => $v){
-                $v->pic =  UserInfoModel::find($v->user_id)->pic;
+        UserCareDream::where('user_id',$user->id)->where('dream_user_id',$other_id)->update(['interaction_number'=>0]);
+        $data = UserInfoModel::where('id',$other_id)->with(['allInteraction'=>function ($query){
+            $query->orderBy('id','desc');
+        }])->first();
+//        $data = UserInfoModel::find($other_id)->allInteraction;
+//        dd($data) ;
+//        dd($data->allInteraction);
+        foreach ($data->allInteraction as $item) {
+            $item->time = DreamInfoModel::find($item->dream_id)->time;
+            $item->comments = $item->comments;
+            foreach ($item->comments as $k => $v) {
+                $v->pic = UserInfoModel::find($v->user_id)->pic;
                 $v->replay = $v->replay;
                 $v->replay = $v->replay;
-                foreach ($v->replay as $k1 => $v1){
-                    $v1->pic =  UserInfoModel::find($v1->user_id)->pic;
+                foreach ($v->replay as $k1 => $v1) {
+                    $v1->pic = UserInfoModel::find($v1->user_id)->pic;
                 }
                 }
             }
             }
         }
         }
         return $this->api($data);
         return $this->api($data);
     }
     }
+
+    public function insertSearchTable($id,$keyword)
+    {
+        $info = SearchInfoModel::where('user_id',$id)->
+        where('search',trim($keyword))->first();
+        if (count($info) == 0) {
+            SearchInfoModel::create(['user_id'=>$id,'search'=>trim($keyword),'times'=>1]);
+        }else{
+            $info->times += 1;
+            $info->save();
+        }
+
+    }
 }
 }

+ 30 - 64
server/app/Http/Controllers/Api/V1/MyController.php

@@ -7,6 +7,7 @@ use App\Models\BaseSettingsModel;
 use App\Models\DreamImages;
 use App\Models\DreamImages;
 use App\Models\DreamInfoModel;
 use App\Models\DreamInfoModel;
 use App\Models\ReplyCommentsInfo;
 use App\Models\ReplyCommentsInfo;
+use App\Models\SystemInfoModel;
 use App\Models\UserCareUser;
 use App\Models\UserCareUser;
 use App\Models\UserDream;
 use App\Models\UserDream;
 use App\Models\UserInfoModel;
 use App\Models\UserInfoModel;
@@ -24,11 +25,6 @@ class MyController extends Controller
      *  "status_code": 0,
      *  "status_code": 0,
      *  "message": "",
      *  "message": "",
      *  "data": {
      *  "data": {
-     *      "my_care_num": 4,关注
-     *      "my_fens_num": 3,粉丝
-     *      "my_collection_num": 2,收藏
-     *      "my_dream_num": 1,发帖
-     *      "user": {
      *          "id": 1,
      *          "id": 1,
      *          "tel": "13880642880",
      *          "tel": "13880642880",
      *          "password": "",
      *          "password": "",
@@ -45,7 +41,10 @@ class MyController extends Controller
      *          "detail_address": "",
      *          "detail_address": "",
      *          "status": 1,
      *          "status": 1,
      *          "remember_token": "",
      *          "remember_token": "",
-     *      }
+         *      "care_num": 4,关注
+         *      "fens_num": 3,粉丝
+         *      "collection_num": 2,收藏
+         *      "dream_num": 1,发帖
      *  }
      *  }
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      * HTTP/1.1 400 Bad Request
      * HTTP/1.1 400 Bad Request
@@ -66,59 +65,16 @@ class MyController extends Controller
          * 点赞?徽章?
          * 点赞?徽章?
          * */
          * */
         $data1 = $user->myCareNum;
         $data1 = $user->myCareNum;
-        $data2 = $user->myFens;
+        $user->care_num = count($data1);
+        $data2 = $user->myFans;
+        $user->fans_num = count($data2);
         $data3 = $user->myCollection;
         $data3 = $user->myCollection;
+        $user->collection_num = count($data3);
         $data4 = $user->UserDream;
         $data4 = $user->UserDream;
-        $my_care_num = count($data1);
-        $my_fens_num = count($data2);
-        $my_collection_num = count($data3);
-        $my_dream_num = count($data4);//发帖数
-        return $this->api(compact('my_care_num','my_fens_num','my_collection_num','my_dream_num','user'));
+        $user->dream_num = count($data4);
+        return $this->api($user);
     }
     }
 
 
-    /**
-     * @api {get} /api/my/persona 个人信息(persona)
-     * @apiDescription 个人信息(persona)
-     * @apiGroup My
-     * @apiPermission Passport
-     * @apiVersion 0.1.0
-     * @apiSuccessExample {json} Success-Response:
-     * HTTP/1.1 200 OK
-     *{
-     *    "status": true,
-     *   "status_code": 0,
-     *    "message": "",
-     *    "data": {
-     *        "user": {
-     *              "id": 1,
-     *              "tel": "13880642880",手机
-     *              "nickname": "",昵称
-     *              "sex": 1,性别
-     *              "job": "", 职业
-     *              "emotion": 1,情感状态
-     *              "address": "",
-     *              "detail_address": "",
-     *              "status": 1,
-     *              "tall": 1,   身高
-     *         }
-     *    }
-     *}
-     * @apiErrorExample {json} Error-Response:
-     * HTTP/1.1 400 Bad Request
-     *{
-     *    "status": true,
-     *    "status_code": 0,
-     *    "message": "",
-     *    "data": {
-     *        "user": null
-     *    }
-     *}
-     */
-    public function persona()
-    {
-        $user = $this->getUser();
-        return $this->api(compact('user'));
-    }
 
 
     /**
     /**
      * @api {get} /api/my/edit_user_info 修改个人信息
      * @api {get} /api/my/edit_user_info 修改个人信息
@@ -231,9 +187,23 @@ class MyController extends Controller
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      * HTTP/1.1 400 Bad Request
      * HTTP/1.1 400 Bad Request
      */
      */
-    public function recharge()
+    public function recharge(Request $request)
     {
     {
+        $validator = \Validator::make($request->all(),
+            [
+                'money'  => 'required|integer',
+            ],
+            [
+                'money.required'  => '请输入金额',
+                'money.integer'  => '请输入整数',
+
+            ]
+        );
+        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);
+
         $user = $this->getUser();
         $user = $this->getUser();
+        $user->coin += $request->money;
+        $user->save();
         return $this->api(compact('user'));
         return $this->api(compact('user'));
     }
     }
 
 
@@ -251,12 +221,8 @@ class MyController extends Controller
      *  "message": "",
      *  "message": "",
      *  "data": {
      *  "data": {
      *     "data": [
      *     "data": [
-     *           {
-     *              "nickname": "",充值人
-     *              "pivot": {
-     *                  "coin": 0  捐赠梦想币数量
-     *                }
-     *          }
+     *        ...
+     *      ]
      *}
      *}
      * @apiErrorExample {json} Error-Response:
      * @apiErrorExample {json} Error-Response:
      * HTTP/1.1 400 Bad Request
      * HTTP/1.1 400 Bad Request
@@ -272,7 +238,7 @@ class MyController extends Controller
     public function systemInfo()
     public function systemInfo()
     {
     {
         $user = $this->getUser();
         $user = $this->getUser();
-        $data = $user->SystemInfo;
+        $data = SystemInfoModel::where('user_id',$user->id)->orderBy('id','desc')->get();
         return $this->api(compact('data'));
         return $this->api(compact('data'));
     }
     }
 
 
@@ -429,7 +395,7 @@ class MyController extends Controller
             $dream->progress = $dream->money == 0 ? 0 :  floor($dream->get_money/$dream->money);
             $dream->progress = $dream->money == 0 ? 0 :  floor($dream->get_money/$dream->money);
         }
         }
 
 
-        return $this->api(compact('dreams'));
+        return $this->api($dreams);
     }
     }
 
 
     /**
     /**

+ 85 - 0
server/app/Models/AccountLog.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class AccountLog extends Model
+{
+    public $table = 'account_logs';
+
+    protected $fillable = [
+        'from_type',
+        'to_type',
+        'from_id',
+        'to_id',
+        'op',
+        'from_amount',
+        'to_amount',
+    ];
+    //交易行为定义
+    const OP_CHARGE         = 'CHARGE';
+    const OP_SUPPORT        = 'SUPPORT';
+    const OP_WITHDRAW       = 'WITHDRAW';
+
+    //货币类型定义
+    const TYPE_BALANCE      = 1;
+    const TYPE_COIN         = 2;
+    const TYPE_CASH         = 3;
+
+    //交易渠道定义
+    const CHANNEL_PLATFORM  = 'platform';
+    const CHANNEL_ALIPAY    = 'alipay';
+    const CHANNEL_WECHATPAY = 'wechatpay';
+
+//    //交易方向
+//    const DIRECTION_INC     = 1; //增加
+//    const DIRECTION_DEC     = 2; //减少
+
+    //交易行为枚举
+    private static $_op = [
+        self::OP_CHARGE         => '充值',
+        self::OP_SUPPORT        => '支持梦想',
+        self::OP_WITHDRAW       => '提现',
+    ];
+
+    //货币类型枚举
+    private static $_type = [
+        self::TYPE_BALANCE      => '余额',
+        self::TYPE_COIN         => '梦想币',
+        self::TYPE_CASH         => '现金',
+    ];
+
+    //交易渠道枚举
+    private static $_channels = [
+        self::CHANNEL_PLATFORM  => '平台内交易',
+        self::CHANNEL_ALIPAY    => '支付宝',
+        self::CHANNEL_WECHATPAY => '微信支付',
+    ];
+
+//    // 交易流向
+//    private static $_direction = [
+//        self::DIRECTION_INC => '收入',
+//        self::DIRECTION_DEC => '支出'
+//    ];
+
+    // 获取所有操作
+    public static function getAllop() {
+        return self::$_op;
+    }
+
+    // 获取所有类型
+    public static function getAllType() {
+        return self::$_type;
+    }
+
+    //获取所有渠道
+    public static function getAllChannels() {
+        return self::$_channels;
+    }
+
+    // 获取交易流向
+    public static function getAllDirections() {
+        return self::$_direction;
+    }
+}

+ 3 - 0
server/app/Models/DreamImages.php

@@ -9,4 +9,7 @@ class DreamImages extends Model
     protected $table = 'dream_images';
     protected $table = 'dream_images';
     protected $fillable = ['dream_id','title','pic'];
     protected $fillable = ['dream_id','title','pic'];
     protected $hidden = ['dream_id','created_at','updated_at','deleted_at','id'];
     protected $hidden = ['dream_id','created_at','updated_at','deleted_at','id'];
+
+
+
 }
 }

+ 2 - 12
server/app/Models/DreamInfoModel.php

@@ -40,7 +40,7 @@ class DreamInfoModel extends BaseModel
                            'status'
                            'status'
                           ];
                           ];
 
 
-    protected $hidden = ['score','created_at','deleted_at','id','sign','mark'];
+    protected $hidden = ['score','deleted_at','mark'];
 
 
 
 
     public function dreamUser()
     public function dreamUser()
@@ -48,19 +48,9 @@ class DreamInfoModel extends BaseModel
         return $this->hasOne('App\Models\UserInfoModel','id','user_id');
         return $this->hasOne('App\Models\UserInfoModel','id','user_id');
     }
     }
 
 
-//    public function dreamFindUser()
-//    {
-//        return $this->belongsToMany('App\Models\UserInfoModel','user_dream','dream_id','user_id');
-//    }
-
-    public function DreamInfo()
-    {
-        return $this->hasMany('App\Models\CommentInfoModel','dream_id','id');
-    }
-
     public function dreamImgs()
     public function dreamImgs()
     {
     {
-        return $this->hasMany('App\Models\DreamImages','dream_id','id');
+        return $this->hasMany('App\Models\DreamImages','dream_id');
     }
     }
 
 
     public function dreamImgsFirst()
     public function dreamImgsFirst()

+ 27 - 0
server/app/Models/InteractionInfo.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class InteractionInfo extends Model
+{
+    protected $table = 'interaction_info';
+    protected $fillable = [
+        'dream_id',
+        'title',
+        'pic1',
+        'pic2',
+        'pic3',
+        'pic4',
+        'pic5',
+        'pic6',
+        'pic7',
+        'pic8',
+        'pic9',
+    ];
+    public function comments()
+    {
+        return $this->hasMany('App\Models\CommentInfoModel','interaction_id','id');
+    }
+}

+ 17 - 0
server/app/Models/SupportDreamModel.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class SupportDreamModel extends Model
+{
+    protected $table = 'support_dream';
+    protected $fillable = [
+        'user_id',
+        'dream_id',
+        'to_user_id',
+        'coin',
+        'score',
+    ];
+}

+ 1 - 2
server/app/Models/SystemInfoModel.php

@@ -9,7 +9,6 @@ class SystemInfoModel extends Model
     protected $table = 'system_info';
     protected $table = 'system_info';
     protected $fillable = [
     protected $fillable = [
         'user_id',
         'user_id',
-        'other_id',
-        'coin',
+        'message',
     ];
     ];
 }
 }

+ 5 - 0
server/app/Models/UserCareDream.php

@@ -7,4 +7,9 @@ use Illuminate\Database\Eloquent\Model;
 class UserCareDream extends Model
 class UserCareDream extends Model
 {
 {
     protected $table = 'user_care_dream';
     protected $table = 'user_care_dream';
+    protected  $fillable = [
+        'user_id',
+        'dream_id',
+        'dream_user_id',
+        ];
 }
 }

+ 22 - 5
server/app/Models/UserInfoModel.php

@@ -41,7 +41,8 @@ class UserInfoModel extends Authenticatable
                            'sign',
                            'sign',
                            'pic',
                            'pic',
                            'money',
                            'money',
-                           'sex',
+        'sex',
+        'city',
                            'signture',
                            'signture',
                            'tall',
                            'tall',
                            'job',
                            'job',
@@ -58,21 +59,27 @@ class UserInfoModel extends Authenticatable
     {
     {
         return $this->belongsToMany('App\Models\UserInfoModel','user_care_user','user_id','other_user_id')->withPivot('dream_num');
         return $this->belongsToMany('App\Models\UserInfoModel','user_care_user','user_id','other_user_id')->withPivot('dream_num');
     }
     }
+    public function UserCareDream()
+    {
+        return $this->belongsToMany('App\Models\DreamInfoModel','user_care_dream','user_id','dream_id')->with(['dreamUser'])->withPivot('interaction_number','dream_user_id')->orderBy('updated_at');
+    }
+
+
 
 
 //    系统消息
 //    系统消息
     public function systemInfo()
     public function systemInfo()
     {
     {
-        return $this->belongsToMany('App\Models\UserInfoModel','system_info','other_id','user_id')->withPivot('coin');
+        return $this->hasMany('App\Models\SystemInfoModel','user_id','id');
     }
     }
 //用户梦想
 //用户梦想
     public function UserDream()
     public function UserDream()
     {
     {
-        return $this->belongsToMany('App\Models\DreamInfoModel','user_dream','user_id','dream_id');
+        return $this->hasMany('App\Models\DreamInfoModel','user_id','id');
     }
     }
 //支持的梦想
 //支持的梦想
     public function supDream()
     public function supDream()
     {
     {
-        return $this->belongsToMany('App\Models\DreamInfoModel','system_info','user_id','other_id');
+        return $this->belongsToMany('App\Models\DreamInfoModel','support_dream','user_id','dream_id');
     }
     }
 //评论的梦想
 //评论的梦想
     public function comDream()
     public function comDream()
@@ -85,7 +92,7 @@ class UserInfoModel extends Authenticatable
         return $this->hasMany('App\Models\UserCareUser','user_id','id');
         return $this->hasMany('App\Models\UserCareUser','user_id','id');
     }
     }
 //关注我的用户
 //关注我的用户
-    public function myFens()
+    public function myFans()
     {
     {
         return $this->hasMany('App\Models\UserCareUser','other_user_id','id');
         return $this->hasMany('App\Models\UserCareUser','other_user_id','id');
     }
     }
@@ -105,5 +112,15 @@ class UserInfoModel extends Authenticatable
     {
     {
         return $this->hasMany('App\Models\SearchInfoModel','user_id','id');
         return $this->hasMany('App\Models\SearchInfoModel','user_id','id');
     }
     }
+//    获取所有梦想的图片
+    public function allImgs()
+    {
+        return $this->hasManyThrough('App\Models\DreamImages', 'App\Models\DreamInfoModel','user_id','dream_id');
+    }
+    //    获取所有梦想的互动
+    public function allInteraction()
+    {
+        return $this->hasManyThrough('App\Models\InteractionInfo', 'App\Models\DreamInfoModel','user_id','dream_id');
+    }
 
 
 }
 }

+ 3 - 3
server/app/Services/Base/ErrorCode.php

@@ -31,10 +31,10 @@ final class ErrorCode {
     const FAVORITE_NOT_EXIST = 1900;
     const FAVORITE_NOT_EXIST = 1900;
     const MERCHANT_ADD_MEMBER_FAILED = 1301;
     const MERCHANT_ADD_MEMBER_FAILED = 1301;
     const MERCHANT_STATUS_NOT_OK = 1302;
     const MERCHANT_STATUS_NOT_OK = 1302;
-    const MERCHANT_BALANCE_NOT_ENOUGH = 1303;
+    const BALANCE_NOT_ENOUGH = 1303;
     const PAY_TYPE_UNSUPPORTED = 2000;
     const PAY_TYPE_UNSUPPORTED = 2000;
     const MEMBER_NOT_EXIST = 1500;
     const MEMBER_NOT_EXIST = 1500;
-    const MEMBER_BALANCE_NOT_ENOUGH = 1501;
+    const COIN_NOT_ENOUGH = 1501;
     const MERCHANT_SERVICE_NOT_EXIST = 1400;
     const MERCHANT_SERVICE_NOT_EXIST = 1400;
     const MERCHANT_SERVICE_ADD_FAILED = 1401;
     const MERCHANT_SERVICE_ADD_FAILED = 1401;
     const CONTENT_GET_DETAIL_FAILED = 1402;
     const CONTENT_GET_DETAIL_FAILED = 1402;
@@ -90,7 +90,7 @@ final class ErrorCode {
         self::MERCHANT_BALANCE_NOT_ENOUGH => '商户余额不足',
         self::MERCHANT_BALANCE_NOT_ENOUGH => '商户余额不足',
         self::PAY_TYPE_UNSUPPORTED => '不支持的支付方式',
         self::PAY_TYPE_UNSUPPORTED => '不支持的支付方式',
         self::MEMBER_NOT_EXIST => '会员不存在',
         self::MEMBER_NOT_EXIST => '会员不存在',
-        self::MEMBER_BALANCE_NOT_ENOUGH => '会员余额不足',
+        self::COIN_NOT_ENOUGH => '梦想币不足',
         self::SERVICE_COST_OVERFLOW_BALANCE => '余额不足,请充值',
         self::SERVICE_COST_OVERFLOW_BALANCE => '余额不足,请充值',
         self::CREATE_SERVICE_OVER_MAX => '服务数量达到系统上限',
         self::CREATE_SERVICE_OVER_MAX => '服务数量达到系统上限',
         self::MERCHANT_SERVICE_STATUS_INVALID => '服务状态不正确',
         self::MERCHANT_SERVICE_STATUS_INVALID => '服务状态不正确',

+ 54 - 0
server/database/migrations/2017_04_02_113151_create_account_logs_table.php

@@ -0,0 +1,54 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+/**
+ * Migration auto-generated by Sequel Pro Laravel Export
+ * @see https://github.com/cviebrock/sequel-pro-laravel-export
+ */
+class CreateAccountLogsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('account_logs', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('from_type', 20)->comment('操作类型,1、余额,2、梦想币,3、现金');
+            $table->unsignedInteger('from_id')->comment('来源对象id');
+            $table->string('from_name', 100)->nullable()->comment('来源对象名称');
+            $table->string('op', 20)->comment('操作,charge:冲值,support:消耗,withdraw:提现');
+            $table->unsignedInteger('from_amount')->comment('操作金额from');
+            $table->string('to_type', 20)->comment('操作类型,1、余额,2、梦想币,3、现金');
+            $table->unsignedInteger('to_id')->comment('目标对象id');
+            $table->string('to_name', 100)->nullable()->comment('来源目标对象名称');
+            $table->unsignedInteger('to_amount')->comment('操作金额to');
+            $table->string('channel', 50)->nullable()->comment('交易渠道,支付宝/微信/平台内等');
+            $table->string('note', 255)->nullable()->comment('备注');
+            $table->nullableTimestamps();
+
+            $table->index(['from_id'], 'idx_from');
+            $table->index(['to_id'], 'idx_to');
+            $table->index('from_type', 'idx_from_type');
+            $table->index('to_type', 'idx_to_type');
+            $table->index('created_at', 'idx_created_at');
+
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('account_logs');
+    }
+}

+ 1 - 1
server/database/migrations/2017_06_01_091444_create_user_info_table.php

@@ -24,7 +24,7 @@ class CreateUserInfoTable extends Migration
             $table->string('nickname',100)->default('')->comment('昵称');
             $table->string('nickname',100)->default('')->comment('昵称');
             $table->string('pic',100)->default('')->comment('用户头像');
             $table->string('pic',100)->default('')->comment('用户头像');
             $table->integer('sign')->default(0)->comment('用户标签');
             $table->integer('sign')->default(0)->comment('用户标签');
-            $table->integer('money')->default(0)->comment('余额');
+            $table->integer('money')->default(0)->comment('梦想币余额');
             $table->tinyInteger('sex')->default(1)->comment('性别');
             $table->tinyInteger('sex')->default(1)->comment('性别');
             $table->string('signture',200)->default('')->comment('个性签名');
             $table->string('signture',200)->default('')->comment('个性签名');
             $table->string('tall',20)->default('')->comment('身高');
             $table->string('tall',20)->default('')->comment('身高');

+ 1 - 1
server/database/migrations/2017_06_02_062004_create_comments_info_table.php

@@ -15,7 +15,7 @@ class CreateCommentsInfoTable extends Migration
     {
     {
         Schema::create('comments_info', function (Blueprint $table) {
         Schema::create('comments_info', function (Blueprint $table) {
             $table->increments('id');
             $table->increments('id');
-            $table->integer('dream_id')->comment('梦想ID');
+            $table->integer('interaction_id')->comment('梦想动态ID');
             $table->integer('user_id')->comment('评价用户');
             $table->integer('user_id')->comment('评价用户');
             $table->tinyInteger('level')->default(0)->comment('评论星级');
             $table->tinyInteger('level')->default(0)->comment('评论星级');
             $table->text('content')->comment('评论内容');
             $table->text('content')->comment('评论内容');

+ 2 - 0
server/database/migrations/2017_06_03_035722_create_user_care_dream_table.php

@@ -17,6 +17,8 @@ class CreateUserCareDreamTable extends Migration
             $table->increments('id');
             $table->increments('id');
             $table->integer('user_id')->comment('用户ID');
             $table->integer('user_id')->comment('用户ID');
             $table->integer('dream_id')->comment('关注梦想ID');
             $table->integer('dream_id')->comment('关注梦想ID');
+            $table->integer('dream_user_id')->comment('梦想用户ID');
+            $table->integer('interaction_number')->comment('最新动态数量');
             $table->timestamps();
             $table->timestamps();
         });
         });
     }
     }

+ 1 - 2
server/database/migrations/2017_06_05_020433_create_system_info_table.php → server/database/migrations/2017_06_05_020434_create_system_info_table.php

@@ -16,8 +16,7 @@ class CreateSystemInfoTable extends Migration
         Schema::create('system_info', function (Blueprint $table) {
         Schema::create('system_info', function (Blueprint $table) {
             $table->increments('id');
             $table->increments('id');
             $table->integer('user_id')->comment('当前用户ID');
             $table->integer('user_id')->comment('当前用户ID');
-            $table->integer('other_id')->comment('充值对象ID');
-            $table->integer('coin')->comment('充值梦想币数量');
+            $table->text('message')->comment('系统消息');
             $table->timestamps();
             $table->timestamps();
         });
         });
     }
     }

+ 1 - 1
server/database/migrations/2017_06_15_082636_add_column_video_to_dream_info_table.php

@@ -14,7 +14,7 @@ class AddColumnVideoToDreamInfoTable extends Migration
     public function up()
     public function up()
     {
     {
         Schema::table('dream_info', function (Blueprint $table) {
         Schema::table('dream_info', function (Blueprint $table) {
-            $table->string('video')->comment('梦想视频地址')->default('')->after('about');
+            $table->string('video')->comment('梦想视频地址')->nullable()->after('about');
         });
         });
     }
     }
 
 

+ 7 - 4
server/database/migrations/2017_06_03_035722_create_user_dream_table.php → server/database/migrations/2017_06_22_083956_create_support_dream_info_table.php

@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Migrations\Migration;
 
 
-class CreateUserDreamTable extends Migration
+class CreateSupportDreamInfoTable extends Migration
 {
 {
     /**
     /**
      * Run the migrations.
      * Run the migrations.
@@ -13,10 +13,13 @@ class CreateUserDreamTable extends Migration
      */
      */
     public function up()
     public function up()
     {
     {
-        Schema::create('user_dream', function (Blueprint $table) {
+        Schema::create('support_dream', function (Blueprint $table) {
             $table->increments('id');
             $table->increments('id');
-            $table->integer('user_id')->comment('用户ID');
+            $table->integer('user_id')->comment('当前用户ID');
             $table->integer('dream_id')->comment('梦想ID');
             $table->integer('dream_id')->comment('梦想ID');
+            $table->integer('to_user_id')->comment('梦想所有者ID');
+            $table->integer('coin')->comment('充值梦想币数量');
+            $table->integer('score')->comment('支持分数');
             $table->timestamps();
             $table->timestamps();
         });
         });
     }
     }
@@ -28,6 +31,6 @@ class CreateUserDreamTable extends Migration
      */
      */
     public function down()
     public function down()
     {
     {
-        Schema::dropIfExists('goods_group');
+        Schema::dropIfExists('support_dream');
     }
     }
 }
 }

+ 4 - 5
server/database/migrations/2017_06_19_150244_add_column_score_to_user_info.php → server/database/migrations/2017_06_22_085329_add_user_id_to_dream_info.php

@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Migrations\Migration;
 
 
-class AddColumnScoreToUserInfo extends Migration
+class AddUserIdToDreamInfo extends Migration
 {
 {
     /**
     /**
      * Run the migrations.
      * Run the migrations.
@@ -13,9 +13,8 @@ class AddColumnScoreToUserInfo extends Migration
      */
      */
     public function up()
     public function up()
     {
     {
-        Schema::table('user_info', function (Blueprint $table) {
-            $table->integer('score')->comment('梦想排行分数')->default(0)->after('status');
-            $table->integer('sup_score')->comment('支持乘数')->default(0)->after('status');
+        Schema::table('dream_info', function (Blueprint $table) {
+            $table->integer('user_id')->comment('用户ID')->after('id');
         });
         });
     }
     }
 
 
@@ -26,7 +25,7 @@ class AddColumnScoreToUserInfo extends Migration
      */
      */
     public function down()
     public function down()
     {
     {
-        Schema::table('user_info', function (Blueprint $table) {
+        Schema::table('dream_info', function (Blueprint $table) {
             //
             //
         });
         });
     }
     }

+ 44 - 0
server/database/migrations/2017_06_22_175547_create_interaction_info_table.php

@@ -0,0 +1,44 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateInteractionInfoTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('interaction_info', function (Blueprint $table) {
+            $table->increments('id')->comment('id');
+            $table->integer('dream_id')->comment('梦想ID');
+            $table->text('title')->comment('互动标题');
+            $table->string('pic1')->default('')->comment('图片');
+            $table->string('pic2')->default('')->comment('图片');
+            $table->string('pic3')->default('')->comment('图片');
+            $table->string('pic4')->default('')->comment('图片');
+            $table->string('pic5')->default('')->comment('图片');
+            $table->string('pic6')->default('')->comment('图片');
+            $table->string('pic7')->default('')->comment('图片');
+            $table->string('pic8')->default('')->comment('图片');
+            $table->string('pic9')->default('')->comment('图片');
+            $table->tinyInteger('status')->default(1)->comment('互动状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('interaction_info');
+    }
+}

+ 17 - 0
server/routes/api.php

@@ -181,4 +181,21 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\Api\V1'], function ($a
         'uses' => 'HomeController@paihang',
         'uses' => 'HomeController@paihang',
     ]);
     ]);
 
 
+//    梦想
+    $api->get('dream/show', [
+        'as' => 'dream.show',
+        'uses' => 'DreamController@show',
+    ]);
+    $api->get('dream/collection', [
+        'as' => 'dream.collection',
+        'uses' => 'DreamController@collection',
+    ]);
+    $api->post('dream/support', [
+        'as' => 'dream.support',
+        'uses' => 'DreamController@support',
+    ]);
+    $api->post('dream/add_info', [
+        'as' => 'dream.add_info',
+        'uses' => 'DreamController@addInfo',
+    ]);
 });
 });