Ver Fonte

骑手通知设置

licailing há 5 anos atrás
pai
commit
cee8cb33e1

+ 5 - 0
pom.xml

@@ -286,6 +286,11 @@
             <version>3.1.62</version>
             <version>3.1.62</version>
         </dependency>
         </dependency>
 -->
 -->
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.100</version>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 13 - 0
src/main/java/com/izouma/dingdong/domain/rider/Rider.java

@@ -62,6 +62,19 @@ public class Rider extends BaseEntity {
     @ApiModelProperty(value = "状态", name = "status")
     @ApiModelProperty(value = "状态", name = "status")
     private ApplyStatus status;
     private ApplyStatus status;
 
 
+
+    @ApiModelProperty(value = "新消息", name = "newNews")
+    private Boolean newNews;
+
+    @ApiModelProperty(value = "新订单提示音",name = "newOrderBeep")
+    private Boolean newOrderTone;
+
+    @ApiModelProperty(value = "催单提示音")
+    private Boolean reminderTone;
+
+    @ApiModelProperty(value = "聊天消息提醒")
+    private Boolean chatMessageReminder;
+
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
     @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
     private User user;
     private User user;

+ 1 - 0
src/main/java/com/izouma/dingdong/repo/UserRepo.java

@@ -40,5 +40,6 @@ public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExe
      */
      */
     List<User> findAllByIdentityAndBlacklistFalse(Identity identity);
     List<User> findAllByIdentityAndBlacklistFalse(Identity identity);
 
 
+    Long countAllByIdentity(Identity identity);
 
 
 }
 }

+ 4 - 0
src/main/java/com/izouma/dingdong/service/AppraisalService.java

@@ -260,6 +260,10 @@ public class AppraisalService {
         BeanUtil.copyProperties(appraisal, dto);
         BeanUtil.copyProperties(appraisal, dto);
         BeanUtil.copyProperties(this.toMerDTO(appraisal),dto);
         BeanUtil.copyProperties(this.toMerDTO(appraisal),dto);
         BeanUtil.copyProperties(this.toRidDTO(appraisal),dto);
         BeanUtil.copyProperties(this.toRidDTO(appraisal),dto);
+        //查找骑手信息
+        Rider rider = riderRepo.findById(appraisal.getRiderId()).orElseThrow(new BusinessException("无骑手"));
+        User user = rider.getUser();
+        dto.setRiderName(user.getNickname());
         return dto;
         return dto;
     }
     }
 }
 }

+ 27 - 1
src/main/java/com/izouma/dingdong/service/backstage/VoiceService.java

@@ -1,13 +1,39 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
+import com.izouma.dingdong.enums.Identity;
+import com.izouma.dingdong.repo.OrderInfoRepo;
+import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.backstage.VoiceRepo;
 import com.izouma.dingdong.repo.backstage.VoiceRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.HashMap;
+import java.util.Map;
+
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
 public class VoiceService {
 public class VoiceService {
 
 
-    private VoiceRepo voiceRepo;
+    private VoiceRepo     voiceRepo;
+    private UserRepo      userRepo;
+    private OrderInfoRepo orderInfoRepo;
+
+    public Map<String, Object> index() {
+        Map<String, Object> map = new HashMap<>();
+
+        //总人数
+        Long user = userRepo.countAllByIdentity(Identity.USER);
+        Long rider = userRepo.countAllByIdentity(Identity.RIDER);
+        Long merchant = userRepo.countAllByIdentity(Identity.MERCHANT);
+        Long admin = userRepo.countAllByIdentity(Identity.ADMIN);
+        map.put("user", user);
+        map.put("rider", rider);
+        map.put("merchant", merchant);
+        map.put("admin", admin);
+
+        //总订单数
+        return map;
+
+    }
 
 
 }
 }

+ 74 - 67
src/main/resources/application.yaml

@@ -1,59 +1,59 @@
 server:
 server:
-    port: 8080
-    servlet:
-        context_path: /
-    compression:
-        enabled: true
-        mime-types: application/json,application/xml,text/html,text/xml,text/plain
+  port: 8080
+  servlet:
+    context_path: /
+  compression:
+    enabled: true
+    mime-types: application/json,application/xml,text/html,text/xml,text/plain
 spring:
 spring:
-    profiles:
-        active: dev
-    datasource:
-        url: jdbc:mysql://rdsave1o67m1ido6gwp6public.mysql.rds.aliyuncs.com/dingdong?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
-        username: microball
-        password: 2wsx@WSX#EDC
-        hikari:
-            minimum-idle: 5
-            maximum-pool-size: 30
-            auto-commit: true
-            idle-timeout: 30000
-            max-lifetime: 1800000
-            connection-timeout: 30000
-            connection-test-query: SELECT 1
-    jpa:
-        database: MySQL
-        database_platform: org.hibernate.dialect.MySQL5InnoDBDialect
-        hibernate:
-            ddl_auto: update
-        properties:
-            hibernate:
-                enable_lazy_load_no_trans: true
-    redis:
-        host: 127.0.0.1
-        port: 6379
-        lettuce:
-            pool:
-                max_active: 8
-                max_idle: 8
-                min_idle: 0
-    servlet:
-        multipart:
-            max_file_size: 100MB
-            max_request_size: 100MB
+  profiles:
+    active: dev
+  datasource:
+    url: jdbc:mysql://rdsave1o67m1ido6gwp6public.mysql.rds.aliyuncs.com/dingdong?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+    username: microball
+    password: 2wsx@WSX#EDC
+    hikari:
+      minimum-idle: 5
+      maximum-pool-size: 30
+      auto-commit: true
+      idle-timeout: 30000
+      max-lifetime: 1800000
+      connection-timeout: 30000
+      connection-test-query: SELECT 1
+  jpa:
+    database: MySQL
+    database_platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    hibernate:
+      ddl_auto: update
+    properties:
+      hibernate:
+        enable_lazy_load_no_trans: true
+  redis:
+    host: 127.0.0.1
+    port: 6379
+    lettuce:
+      pool:
+        max_active: 8
+        max_idle: 8
+        min_idle: 0
+  servlet:
+    multipart:
+      max_file_size: 100MB
+      max_request_size: 100MB
 jwt:
 jwt:
-    secret: XvAD0kboD76Dpebm
-    header: Authorization
-    expiration: 2592000 #30days
+  secret: XvAD0kboD76Dpebm
+  header: Authorization
+  expiration: 2592000 #30days
 wx:
 wx:
-#    mp:
-#        app_id: wx2375cba2eec2c479
-#        app_secret: 28e4829124860d9ef9e2f32aeefd1111
-    miniapp:
-        app_id: wx6517cbf58115c508
-        app_secret: 8af0e8ba28ffddfb7e574e6c7cb6aaf1
-        msg_token: msgToken
-        msg_aes_key: aesKey
-        msg_format: JSON
+  #    mp:
+  #        app_id: wx2375cba2eec2c479
+  #        app_secret: 28e4829124860d9ef9e2f32aeefd1111
+  miniapp:
+    app_id: wx6517cbf58115c508
+    app_secret: 8af0e8ba28ffddfb7e574e6c7cb6aaf1
+    msg_token: msgToken
+    msg_aes_key: aesKey
+    msg_format: JSON
 #    pay:
 #    pay:
 #        appId: wx2375cba2eec2c479
 #        appId: wx2375cba2eec2c479
 #        mchId: 1529090291
 #        mchId: 1529090291
@@ -64,32 +64,39 @@ wx:
 #        notifyUrl: http://zmj.izouma.com/wx/payNotify
 #        notifyUrl: http://zmj.izouma.com/wx/payNotify
 #        refundNotifyUrl: http://zmj.izouma.com/wx/refundNotify
 #        refundNotifyUrl: http://zmj.izouma.com/wx/refundNotify
 storage:
 storage:
-    provider: aliyun
-    local_path: /var/www/upload/
+  provider: aliyun
+  local_path: /var/www/upload/
 aliyun:
 aliyun:
-    access-key-id: PXzJyah5rZfWHIIH
-    access-key-secret: e1MS6j0wypXJrw8CM0hObZu8qKbfah
-    oss-end-point: oss-cn-hangzhou.aliyuncs.com
-    oss-bucket-name: idingdong
-    oss-domain: https://idingdong.oss-cn-hangzhou.aliyuncs.com
+  access-key-id: PXzJyah5rZfWHIIH
+  access-key-secret: e1MS6j0wypXJrw8CM0hObZu8qKbfah
+  oss-end-point: oss-cn-hangzhou.aliyuncs.com
+  oss-bucket-name: idingdong
+  oss-domain: https://idingdong.oss-cn-hangzhou.aliyuncs.com
 general:
 general:
-    host: http://dingdong.izouma.com
-    notify-url: http://dingdong.izouma.com/pay/notify
+  host: http://dingdong.izouma.com
+  notify-url: http://dingdong.izouma.com/pay/notify
 ksher:
 ksher:
-    appid:
-    private_key:
+  appid: 35005
+  private_key: MIICYgIBAAKBgQCiZ3p8NT6SnDwsH6tkt3YKWyYqxWosEZKABS6F/KVnid4z/ry7TmVhjxSC+tKRah0EpcKJ2NwBwAegcMCKkRP0jvhC6
+    pYPtQ7maLTUGeYOoMc6BT2muJtQTp+SktygTpX+c63N1JuPdHijAV9FYA4tA8R9bT1Mq437YBUc7A7NAQIDAQABAoGAZs32XVYfLBO2i3/osTLpiBi3C
+    nA5i3f8MwoUr0CFPAusG2Hv+unfh2hZZah9TwvLHrwHb9dVPc5fhZKZ3yMLDbufLxyEORVSDnTRVti3t9ez/aP0TJCbbly8GLUzHMucpixIqjdyAcM
+    TEnwmIhtXh1CjfcS4YU2li0VYeP29SpkCRQDkPAgKfDR7wqtzfzItrnlzAT8vuEEss7Dn0hQHtbXrLqgfC+58QP+M8mpPlkLcu6xVeVgzarAafgMCX
+    agNvjmPev54awI9ALYpRtZLBLOvuUXsuNZJytSIeAXHMg5DIiE3FVog7cKwGsbe22dERYW6g9uJ21xljLEwMIH+TNapxsYbQwJFAKZe8EmcYrG4pTx
+    rAwvzvEpOJV5GxROt5Q4HwFwiZHsMprcC/pSK2P5Ik6ByW0kGcUhZTScl5Ttakhz+YouqF9F0id0DAj0AmLy9Z5sZQyzZVXcqeIsBJfmTYYznPKwvp
+    tgP8DViBncwzIU6RDkrbfi47NCHfM6tDDjSw3ydovRR9fQPAkUAtIEVG4Xbm4kgixYF9NuDwPSsEh3MePD4lHhoACjV9SlVpmCOnCP6guvcziLrmPg
+    FZUL4HL/31DBbNvk5WYlgirCewsY=
 ---
 ---
 
 
 spring:
 spring:
-    profiles: test
+  profiles: test
 
 
 ---
 ---
 
 
 spring:
 spring:
-    profiles: prod
+  profiles: prod
 
 
 ---
 ---
 IMConfig:
 IMConfig:
-    sdkAppId: 1400375593
-    secretKey: 7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417
+  sdkAppId: 1400375593
+  secretKey: 7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417
 
 

+ 62 - 22
src/main/vue/src/views/AppraisalEdit.vue

@@ -9,30 +9,54 @@
                 <el-input v-model="formData.nickname"></el-input>
                 <el-input v-model="formData.nickname"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="img" label="图片">
             <el-form-item prop="img" label="图片">
-                <el-image
-                        style="width: 100px; height: 100px"
-                        :src="formData.img"
-                        :preview-src-list="formData.img">
-                </el-image>
+                <el-image v-for="item in picList(formData.img)" style="width: 80px; height: 80px; padding-right: 10px"
+                          :key="item" :src="item" fit="cover" :preview-src-list="[item]"
+                ></el-image>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="merShowName" label="商家名称">
             <el-form-item prop="merShowName" label="商家名称">
                 <el-input v-model="formData.nickname"></el-input>
                 <el-input v-model="formData.nickname"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="goodsLike" label="商品评分">
             <el-form-item prop="goodsLike" label="商品评分">
-                <el-input v-model="formData.goodsLike?'好评':'差评'"></el-input>
+                <!--<el-input v-model="formData.goodsLike?'好评':'差评'" disabled></el-input>-->
+                <el-card shadow="hover">
+                    <div class="text item">
+                        <i v-if="formData.goodsLike" class="fas fa-grin" style="font-size: 20px; color: #de841a"></i>
+                        <i v-if="!formData.goodsLike" class="fas fa-meh" style="font-size: 20px;"></i>
+                        {{formData.goodsLike?'好评':'差评'}}
+                    </div>
+                    <div class="text item">{{formData.goodsAppraise}}</div>
+                </el-card>
+
             </el-form-item>
             </el-form-item>
-            <el-form-item prop="goodsAppraise" label="商品评价">
+            <!--<el-form-item prop="goodsAppraise" label="商品评价">
                 <el-input type="textarea" v-model="formData.goodsAppraise"></el-input>
                 <el-input type="textarea" v-model="formData.goodsAppraise"></el-input>
-            </el-form-item>
-            <el-form-item prop="riderLike" label="骑手评分">
-                <el-input v-model="formData.riderLike"></el-input>
-            </el-form-item>
+            </el-form-item>-->
+            <!--<el-form-item prop="riderLike" label="骑手评分">
+                <el-input v-model="like"></el-input>
+            </el-form-item>-->
             <el-form-item prop="riderAppraise" label="骑手评价">
             <el-form-item prop="riderAppraise" label="骑手评价">
-                <el-input type="textarea" v-model="formData.riderAppraise"></el-input>
-            </el-form-item>
-            <el-form-item prop="content" label="快捷评价">
-                <el-input v-model="formData.content"></el-input>
+                <el-card shadow="hover">
+                    <el-rate
+                            v-model="formData.riderLike"
+                            disabled
+                            :max='3'
+                            style="padding-bottom: 8px"
+                            >
+                    </el-rate>
+                    <div class="text item"><span v-for="item in formData.content" :key="item" >
+                        {{item}}
+                    </span></div>
+                    <div class="text item">{{formData.riderAppraise}}</div>
+                </el-card>
+                <!--<el-input type="textarea" v-model="formData.riderAppraise"></el-input>-->
             </el-form-item>
             </el-form-item>
+            <!--<el-form-item prop="content" label="快捷评价">
+                <el-tag v-for="item in formData.content" :key="item"
+                        effect="plain" type="info" size="medium">{{item}}</el-tag>
+               &lt;!&ndash; <el-input v-for="item in formData.content" :key="item" :value="item"
+                style="width: 90px">
+                </el-input>&ndash;&gt;
+            </el-form-item>-->
             <el-form-item prop="merchantReply" label="商家回复评价">
             <el-form-item prop="merchantReply" label="商家回复评价">
                 <el-input type="textarea" v-model="formData.merchantReply"></el-input>
                 <el-input type="textarea" v-model="formData.merchantReply"></el-input>
             </el-form-item>
             </el-form-item>
@@ -45,12 +69,12 @@
                 </el-date-picker>
                 </el-date-picker>
             </el-form-item>
             </el-form-item>
             <el-form-item>
             <el-form-item>
-               <!-- <el-button @click="onSave" :loading="saving"
-                           type="primary">保存
-                </el-button>
-                <el-button @click="onDelete" :loading="saving"
-                           type="danger" v-if="formData.id">删除
-                </el-button>-->
+                <!-- <el-button @click="onSave" :loading="saving"
+                            type="primary">保存
+                 </el-button>
+                 <el-button @click="onDelete" :loading="saving"
+                            type="danger" v-if="formData.id">删除
+                 </el-button>-->
                 <el-button @click="$router.go(-1)">返回</el-button>
                 <el-button @click="$router.go(-1)">返回</el-button>
             </el-form-item>
             </el-form-item>
         </el-form>
         </el-form>
@@ -62,9 +86,10 @@
         created() {
         created() {
             if (this.$route.query.id) {
             if (this.$route.query.id) {
                 this.$http
                 this.$http
-                    .get('appraisal/getDTO/' + this.$route.query.id)
+                    .get('appraisal/getDto/' + this.$route.query.id)
                     .then(res => {
                     .then(res => {
                         this.formData = res;
                         this.formData = res;
+                        this.riderLike()
                     })
                     })
                     .catch(e => {
                     .catch(e => {
                         console.log(e);
                         console.log(e);
@@ -77,9 +102,17 @@
                 saving: false,
                 saving: false,
                 formData: {},
                 formData: {},
                 rules: {},
                 rules: {},
+                like: '',
             }
             }
         },
         },
         methods: {
         methods: {
+            picList(row) {
+                if (row) {
+                    return row.split(",");
+                } else {
+                    return "";
+                }
+            },
             onSave() {
             onSave() {
                 this.$refs.form.validate((valid) => {
                 this.$refs.form.validate((valid) => {
                     if (valid) {
                     if (valid) {
@@ -119,6 +152,13 @@
                     }
                     }
                 })
                 })
             },
             },
+            riderLike() {
+                if (this.formData.riderLike === 1)
+                    this.like = '非常差';
+                else if (this.formData.riderLike === 2)
+                    this.like = '一般';
+                else this.like = '超赞'
+            }
         }
         }
     }
     }
 </script>
 </script>

+ 64 - 26
src/main/vue/src/views/OrderInfoEdit.vue

@@ -2,7 +2,13 @@
     <div class="edit-view">
     <div class="edit-view">
         <el-form :model="formData" :rules="rules" ref="form" label-width="108px" label-position="right" size="small"
         <el-form :model="formData" :rules="rules" ref="form" label-width="108px" label-position="right" size="small"
                  style="max-width: 500px;">
                  style="max-width: 500px;">
-            <el-form-item prop="nickname" label="用户昵称">
+            <el-form-item prop="nickname" label="用户信息">
+                <!--<el-card shadow="hover">
+                    <div class="">{{formData.nickname}}</div>
+                    <div class="text item">{{address.name}} {{address.phone}}</div>
+                    <div class="text item">{{address.info}}</div>
+                </el-card>-->
+
                 <el-input v-model="formData.nickname"></el-input>
                 <el-input v-model="formData.nickname"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="userAddress" label="配送地址">
             <el-form-item prop="userAddress" label="配送地址">
@@ -14,8 +20,19 @@
                 <el-input v-model="formData.merchantShowName"></el-input>
                 <el-input v-model="formData.merchantShowName"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="merchantStatus" label="商家状态">
             <el-form-item prop="merchantStatus" label="商家状态">
-                <el-input v-model="formData.merchantStatus"
-                ></el-input>
+                <!--<el-select v-model="formData.merchantStatus" disabled placeholder="请选择">
+                    <el-option
+                            v-for="item in merchantStatusOptions"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value">
+                    </el-option>
+                </el-select>-->
+                <el-steps :active="number" >
+                    <el-step  title="未接单/已拒单" ></el-step>
+                    <el-step  title="已接单" ></el-step>
+                    <el-step title="已完成" ></el-step>
+                </el-steps>
             </el-form-item>
             </el-form-item>
             <!--            <el-form-item prop="merchantAddress" label="商家地址">-->
             <!--            <el-form-item prop="merchantAddress" label="商家地址">-->
             <!--                <el-input v-model="formData.merchantAddress"></el-input>-->
             <!--                <el-input v-model="formData.merchantAddress"></el-input>-->
@@ -33,14 +50,17 @@
                       <el-input v-model="formData.riderStatus"></el-input>
                       <el-input v-model="formData.riderStatus"></el-input>
                   </el-form-item>-->
                   </el-form-item>-->
             <el-form-item prop="riderStatus" label="骑手状态">
             <el-form-item prop="riderStatus" label="骑手状态">
-                <el-select v-model="formData.riderStatus" disabled placeholder="请选择">
+                <!--<el-select v-model="formData.riderStatus" disabled placeholder="请选择">
                     <el-option
                     <el-option
                             v-for="item in riderStatusOptions"
                             v-for="item in riderStatusOptions"
                             :key="item.value"
                             :key="item.value"
                             :label="item.label"
                             :label="item.label"
                             :value="item.value">
                             :value="item.value">
                     </el-option>
                     </el-option>
-                </el-select>
+                </el-select>-->
+                <el-steps :active="riderNumber" >
+                    <el-step v-for="item in riderStatusOptions" :key="item.value" :title="item.label" ></el-step>
+                </el-steps>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="totalAmount" label="总价">
             <el-form-item prop="totalAmount" label="总价">
                 <el-input v-model="formData.totalAmount" readonly></el-input>
                 <el-input v-model="formData.totalAmount" readonly></el-input>
@@ -109,18 +129,19 @@
             <!--            </el-form-item>-->
             <!--            </el-form-item>-->
             <el-form-item prop="goods" label="商品详情">
             <el-form-item prop="goods" label="商品详情">
                 <template v-if="goods">
                 <template v-if="goods">
-                    <el-table :data="goods">
-                        <el-table-column prop="goodsId" label="商品ID">
-                        </el-table-column>
-                        <el-table-column prop="goods.name" label="商品名称"></el-table-column>
-                        <el-table-column prop="num" label="数量">
-                        </el-table-column>
-                        <el-table-column prop="specification" label="规格">
-                        </el-table-column>
-                        <el-table-column prop="goodsPrice" label="价格">
-                        </el-table-column>
-
-                    </el-table>
+                    <el-card shadow="never">
+                        <el-table :data="goods">
+                            <el-table-column prop="goodsId" label="商品ID">
+                            </el-table-column>
+                            <el-table-column prop="goods.name" label="商品名称"></el-table-column>
+                            <el-table-column prop="num" label="数量">
+                            </el-table-column>
+                            <el-table-column prop="specification" label="规格">
+                            </el-table-column>
+                            <el-table-column prop="goodsPrice" label="价格">
+                            </el-table-column>
+                        </el-table>
+                    </el-card>
                 </template>
                 </template>
             </el-form-item>
             </el-form-item>
 
 
@@ -150,10 +171,7 @@
                     .get('orderInfo/get/' + this.$route.query.id)
                     .get('orderInfo/get/' + this.$route.query.id)
                     .then(res => {
                     .then(res => {
                         this.formData = res;
                         this.formData = res;
-                        let add = this.formData.userAddress.split(",");
-                        this.address.name = add[0];
-                        this.address.phone = add[1];
-                        this.address.info = add[2];
+                        this.active();
                     })
                     })
                     .catch(e => {
                     .catch(e => {
                         console.log(e);
                         console.log(e);
@@ -189,16 +207,19 @@
                     {"label": "支付宝", "value": "ALI_PAY"},
                     {"label": "支付宝", "value": "ALI_PAY"},
                     {"label": "货到付款", "value": "CASH_DELIVERY"},
                     {"label": "货到付款", "value": "CASH_DELIVERY"},
                     {"label": "信用卡", "value": "CREDIT_CARD"}],
                     {"label": "信用卡", "value": "CREDIT_CARD"}],
-                merchantStatusOptions: [{"label": "接单", "value": "RECEIVED"}, {
-                    "label": "未接单",
-                    "value": "NOT_RECEIVED"
-                }, {"label": "已拒单", "value": "REJECTED"}],
+                merchantStatusOptions: [
+                    {"label": "已完成", "value": "CARRY_OUT"},
+                    {"label": "接单", "value": "RECEIVED"},
+                    {"label": "未接单", "value": "NOT_RECEIVED"},
+                    {"label": "已拒单", "value": "REJECTED"}],
                 goods: [],
                 goods: [],
                 address: {
                 address: {
                     name: "",
                     name: "",
                     phone: "",
                     phone: "",
                     info: "",
                     info: "",
-                }
+                },
+                number: 1,
+                riderNumber: 1,
             }
             }
         },
         },
         methods: {
         methods: {
@@ -266,6 +287,23 @@
                     }
                     }
                 });
                 });
             },
             },
+            active(){
+                let add = this.formData.userAddress.split(",");
+                this.address.name = add[0];
+                this.address.phone = add[1];
+                this.address.info = add[2];
+
+                switch (this.formData.merchantStatus) {
+                    case "RECEIVED":this.number = 2;break;
+                    case "CARRY_OUT":this.number = 3;break;
+                }
+                switch (this.formData.riderStatus) {
+                    case "RECEIVED":this.riderNumber = 2;break;
+                    case "TAKE_MEAL":this.riderNumber = 3;break;
+                    case "MEAL_DELIVERY":this.riderNumber = 4;break;
+                    case "CARRY_OUT":this.riderNumber = 5;break;
+                }
+            }
         }
         }
     }
     }
 </script>
 </script>

+ 1 - 1
src/main/vue/src/views/merchant/MerchantList.vue

@@ -197,7 +197,7 @@
                 </div>
                 </div>
                 <div class="info-item">营业:{{formData.week}}</div>
                 <div class="info-item">营业:{{formData.week}}</div>
                 <div class="info-item">营业时间:{{formData.startTime}} - {{formData.endTime}}</div>
                 <div class="info-item">营业时间:{{formData.startTime}} - {{formData.endTime}}</div>
-                <hr/>
+                <el-divider></el-divider>
                 <div class="info-item">法人姓名:{{verified.realName}}</div>
                 <div class="info-item">法人姓名:{{verified.realName}}</div>
                 <div class="info-item">法人身份证:{{verified.idNo}}</div>
                 <div class="info-item">法人身份证:{{verified.idNo}}</div>
                 <div class="info-item">身份证照片:
                 <div class="info-item">身份证照片:

+ 3 - 2
src/main/vue/src/views/user/UserEdit.vue

@@ -7,6 +7,7 @@
             </el-form-item>
             </el-form-item>
             <el-form-item prop="username" label="用户名">
             <el-form-item prop="username" label="用户名">
                 <el-input v-model="formData.username" readonly></el-input>
                 <el-input v-model="formData.username" readonly></el-input>
+<!--                <el-card>{{formData.username}}</el-card>-->
             </el-form-item>
             </el-form-item>
             <el-form-item prop="nickname" label="昵称">
             <el-form-item prop="nickname" label="昵称">
                 <el-input v-model="formData.nickname" readonly></el-input>
                 <el-input v-model="formData.nickname" readonly></el-input>
@@ -267,7 +268,7 @@
                     });
                     });
             },
             },
             showCoupon() {
             showCoupon() {
-                this.dislogTableCoupon = true;
+                this.dialogTableCoupon = true;
                 this.$http
                 this.$http
                     .get('/coupon/all')
                     .get('/coupon/all')
                     .then(res => {
                     .then(res => {
@@ -279,7 +280,7 @@
                     });
                     });
             },
             },
             showOrder() {
             showOrder() {
-                this.dislogTableOrder = true;
+                this.dialogTableOrder = true;
                 this.$http
                 this.$http
                     .post('/orderInfo/list', {
                     .post('/orderInfo/list', {
                         id: this.formData.id,
                         id: this.formData.id,

+ 5 - 0
src/test/java/com/izouma/dingdong/service/AppraisalServiceTest.java

@@ -71,4 +71,9 @@ public class AppraisalServiceTest {
         pageQuery.setQuery(query);
         pageQuery.setQuery(query);
         System.out.println(appraisalController.merList(pageQuery));
         System.out.println(appraisalController.merList(pageQuery));
     }
     }
+
+    @Test
+    public void testGetDto(){
+        System.out.println(appraisalController.getDto(1526L));
+    }
 }
 }

+ 67 - 2
src/test/java/com/izouma/dingdong/service/UserSigServiceTest.java

@@ -6,6 +6,14 @@ import com.tencent.xinge.bean.Message;
 import com.tencent.xinge.bean.MessageType;
 import com.tencent.xinge.bean.MessageType;
 import com.tencent.xinge.push.app.PushAppRequest;
 import com.tencent.xinge.push.app.PushAppRequest;
 import com.tencentyun.TLSSigAPIv2;
 import com.tencentyun.TLSSigAPIv2;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
 import org.json.JSONObject;
 import org.json.JSONObject;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
@@ -13,9 +21,11 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
 import java.io.BufferedReader;
 import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URL;
+import java.util.*;
 
 
 @SpringBootTest
 @SpringBootTest
 @RunWith(SpringRunner.class)
 @RunWith(SpringRunner.class)
@@ -28,7 +38,7 @@ public class UserSigServiceTest {
 //        System.out.println(userSigService.generateUserSig("83"));
 //        System.out.println(userSigService.generateUserSig("83"));
         TLSSigAPIv2 api = new TLSSigAPIv2(1400375593, "7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417");
         TLSSigAPIv2 api = new TLSSigAPIv2(1400375593, "7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417");
 
 
-        System.out.println(api.genSig("admin", 30000));
+        System.out.println(api.genSig("administrator", 30000));
     }
     }
 
 
     @Test
     @Test
@@ -66,7 +76,7 @@ public class UserSigServiceTest {
                 .appId("1400375593")
                 .appId("1400375593")
                 .secretKey("7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417")
                 .secretKey("7fe225c3b41cf2e7f0c79ebaf0e3b7ec60f6c7188e1561dcfddacb4767654417")
                 .domainUrl("https://api.tpns.tencent.com/")
                 .domainUrl("https://api.tpns.tencent.com/")
-        .build();
+                .build();
 
 
         PushAppRequest pushAppRequest = new PushAppRequest();
         PushAppRequest pushAppRequest = new PushAppRequest();
         //完善PushAppRequest  消息
         //完善PushAppRequest  消息
@@ -81,4 +91,59 @@ public class UserSigServiceTest {
         JSONObject ret = xingeApp.pushApp(pushAppRequest);
         JSONObject ret = xingeApp.pushApp(pushAppRequest);
         System.out.println(ret);
         System.out.println(ret);
     }
     }
+
+    @Test
+    public void test3() {
+        String PayDomain = "https://console.tim.qq.com";
+
+        String url = "/v4/all_member_push/im_push";
+
+        String url1 = "/v4/openim/sendmsg";
+
+        HttpClient client = HttpClients.createDefault();
+        HttpPost post = new HttpPost(PayDomain + url1);
+
+        Map params = new HashMap();
+
+        //设置公共参数
+        params.put("sdkappid", "1400375593");
+        params.put("usersig", "eJw1jl0LgjAYhf-LbgvZ3EY66CpiXaRIRl0PN*3F-GgbYUT-vaF17s55eOC80flYRmYawRokKA5Zz9PTWCRQHGG0dKdbNY6gkSAMY7rhPKULAW16DzXMgtId9OC8VX6wfxWaQHbNdBhWhdN4eOS3smoveVWle3aXNpN5S9npWtBXLSeSbX*ihy6cIjzlCeExTj5fwBE0Ow__");
+        params.put("identifier", "administrator");
+
+        //回调
+        params.put("random", 9999);
+        params.put("contenttype", "json");
+
+        List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
+        for (Iterator iter = params.keySet().iterator(); iter.hasNext(); ) {
+            String name = (String) iter.next();
+            String value = String.valueOf(params.get(name));
+            urlParameters.add(new BasicNameValuePair(name, value));
+        }
+//        String sign = KsherSign(params);
+//        urlParameters.add(new BasicNameValuePair("sign", sign));
+//        post.setEntity(new UrlEncodedFormEntity(urlParameters));
+        try {
+            HttpResponse response = client.execute(post);
+            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+            StringBuffer result = new StringBuffer();
+            String line = "";
+            while ((line = rd.readLine()) != null) {
+                result.append(line);
+            }
+            rd.close();
+            System.out.println(result.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+//        com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(result.toString());
+//        boolean isVerify = KsherVerify(json.getJSONObject("data"), json.getString("sign"));
+//        if (isVerify) {
+//        System.out.println(result.toString());
+//        } else {
+//            throw new Exception("verify signature failed");
+//        }
+    }
 }
 }