licailing 5 anos atrás
pai
commit
37016b3469

+ 1 - 1
src/main/java/com/izouma/dingdong/domain/OrderInfo.java

@@ -24,7 +24,7 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "用户ID", name = "userId")
     private Long userId;
 
-    //经度在前 纬度在后
+    //经度在前 纬度在后 lng lat
     @ApiModelProperty(value = "用户地址经纬度", name = "location")
     private String location;
 

+ 2 - 0
src/main/java/com/izouma/dingdong/dto/CouponDTO.java

@@ -16,6 +16,8 @@ import java.time.LocalDate;
 @Data
 @ApiModel(value = "优惠券", description = "优惠券")
 public class CouponDTO {
+    private Long id;
+
     @ApiModelProperty(value = "优惠券名称", name = "name")
     private String name;
 

+ 8 - 95
src/main/java/com/izouma/dingdong/dto/OrderInfoDTO.java

@@ -11,11 +11,6 @@ import lombok.*;
 @ApiModel(value = "订单表", description = "订单表")
 public class OrderInfoDTO extends OrderInfo {
 
-//    private Long id;
-
-//    @Enumerated(EnumType.STRING)
-//    @ApiModelProperty(value = "订单状态", name = "orderStatus")
-//    private OrderStatus status;
 
     //商家信息
     @ApiModelProperty(value = "商家用户Id",name = "mUserId")
@@ -30,25 +25,17 @@ public class OrderInfoDTO extends OrderInfo {
     @ApiModelProperty(value = "商家地址", name = "merAddress")
     private String merAddress;
 
-//    @Enumerated(EnumType.STRING)
-//    @ApiModelProperty(value = "商家状态", name = "merchantStatus")
-//    private MerchantStatus merchantStatus;
+    @ApiModelProperty(value = "商家logo", name = "merLogo")
+    private String merLogo;
+
+    @ApiModelProperty(value = "商家id", name = "mid")
+    private Long mid;
 
 
-    //用户信息
-//    @ApiModelProperty(value = "用户Id",name = "userId")
-//    private Long userId;
 
     @ApiModelProperty(value = "用户昵称")
     private String nickname;
 
-//    //经度在前 纬度在后
-//    @ApiModelProperty(value = "用户地址经纬度", name = "location")
-//    private String location;
-
-//    @ApiModelProperty(value = "配送地址", name = "userAddress")
-//    private String userAddress;
-
 
     //骑手信息
     @ApiModelProperty(value = "骑手用户Id",name = "rUserId")
@@ -60,83 +47,9 @@ public class OrderInfoDTO extends OrderInfo {
     @ApiModelProperty(value = "骑手名称", name = "riderName")
     private String riderName;
 
-//    @Enumerated(EnumType.STRING)
-//    @ApiModelProperty(value = "骑手状态", name = "riderStatus")
-//    private RiderStatus riderStatus;
-
-
-    //价格
-//    @ApiModelProperty(value = "包装价格", name = "packingPrice")
-//    private BigDecimal packingPrice;
-//
-//    @ApiModelProperty(value = "配送费", name = "deliveryAmount")
-//    private BigDecimal deliveryAmount;
-//
-//    @ApiModelProperty(value = "满减", name = "fullReduction")
-//    private BigDecimal fullReduction;
-//
-//    @ApiModelProperty(value = "首单", name = "firstBuy")
-//    private BigDecimal firstBuy;
-//
-//    @ApiModelProperty(value = "红包", name = "redBag")
-//    private BigDecimal redBag;
-//
-//    @ApiModelProperty(value = "新用户", name = "newUser")
-//    private BigDecimal newUser;
-//
-//    @ApiModelProperty(value = "总价", name = "totalAmount")
-//    private BigDecimal totalAmount;
-
-//    @ApiModelProperty(value = "商品总价", name = "goodsAmount")
-//    private BigDecimal goodsAmount;
-
-//    @ApiModelProperty(value = "实付金额", name = "realAmount")
-//    private BigDecimal realAmount;
-//
-//    @ApiModelProperty(value = "优惠券ID", name = "couponId")
-//    private Long userCouponId;
-
-
-
-
-    //订单信息
-//    @ApiModelProperty(value = "订单信息",name = "orderNo")
-//    private String orderNo;
-//
-//    @ApiModelProperty(value = "下单时间", name = "orderTime")
-//    private LocalDateTime orderTime;
-//
-//    @ApiModelProperty(value = "备注", name = "remark")
-//    private String remark;
-//
-//    @Enumerated(EnumType.STRING)
-//    @ApiModelProperty(value = "支付方式", name = "payMethod")
-//    private PayMethod payMethod;
-//
-//    @Column(nullable = false)
-//    @ApiModelProperty(value = "取消订单", name = "cancel")
-//    private Boolean cancel = false;
-//
-//    @Column(nullable = false)
-//    @ApiModelProperty(value = "已评价", name = "rated")
-//    private Boolean rated = false;
-//
-//    @ApiModelProperty(value = "用户收到时间", name = "userReceivedTime")
-//    private LocalDateTime userReceivedTime;
-
-//    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-//    @JoinColumn(name = "orderInfoId")
-//    List<OrderGoodsSpec> orderGoodsSpecs;
-
-//    @Enumerated(EnumType.STRING)
-//    @ApiModelProperty(value = "取消订单原因", name = "reason")
-//    private RefundReason reason;
-
-//    @ApiModelProperty(value = "预计到达时间", name = "timeOfArrival")
-//    private LocalDateTime timeOfArrival;
-//
-//    @ApiModelProperty(value = "期望送达时间段", name = "expectDeliveryTime")
-//    private String expectDeliveryTime;
+    @ApiModelProperty(value = "骑手地址经纬度", name = "ridLocation")
+    private String ridLocation;
+
 
     @ApiModelProperty(value = "评价ID", name = "appraisalId")
     private Long appraisalId;

+ 3 - 0
src/main/java/com/izouma/dingdong/repo/rider/RiderLocationRepo.java

@@ -6,9 +6,12 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Optional;
 
 public interface RiderLocationRepo extends JpaRepository<RiderLocation, Long>, JpaSpecificationExecutor<RiderLocation> {
 
     //按创建时间查找
     List<RiderLocation> findAllByCreatedAt(LocalDateTime dateTime);
+
+    Optional<RiderLocation> findLastByRiderId(Long riderId);
 }

+ 1 - 1
src/main/java/com/izouma/dingdong/service/CouponService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service;
 
-import cn.hutool.core.bean.BeanUtil;
 import com.izouma.dingdong.domain.Coupon;
 import com.izouma.dingdong.dto.CouponDTO;
 import com.izouma.dingdong.repo.CouponRepo;
@@ -35,6 +34,7 @@ public class CouponService {
 
     public CouponDTO toDTO(Coupon coupon) {
         CouponDTO dto = CouponDTO.builder()
+                .id(coupon.getId())
                 .amount(coupon.getAmount())
                 .endDate(coupon.getEndDate())
                 .fullAmount(coupon.getFullAmount())

+ 13 - 4
src/main/java/com/izouma/dingdong/service/OrderInfoService.java

@@ -7,6 +7,7 @@ import com.izouma.dingdong.domain.*;
 import com.izouma.dingdong.domain.backstage.BlackList;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.rider.Rider;
+import com.izouma.dingdong.domain.rider.RiderLocation;
 import com.izouma.dingdong.domain.user.ShoppingCart;
 import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
@@ -18,6 +19,7 @@ import com.izouma.dingdong.enums.*;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.*;
 import com.izouma.dingdong.repo.backstage.BlackListRepo;
+import com.izouma.dingdong.repo.rider.RiderLocationRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.repo.user.ShoppingCartRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
@@ -60,6 +62,7 @@ public class OrderInfoService {
     private DeliveryFeeService      deliveryFeeService;
     private SysConfigService        sysConfigService;
     private BlackListRepo           blackListRepo;
+    private RiderLocationRepo       riderLocationRepo;
 
     /*
     用户下单
@@ -339,9 +342,9 @@ public class OrderInfoService {
     /*
     骑手强制已到店,已送达
     */
-    public void mandatory(Long orderId,RiderStatus status){
+    public void mandatory(Long orderId, RiderStatus status) {
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
-        switch (status){
+        switch (status) {
             case ARRIVE:
                 //待取餐
                 orderInfo.setRiderStatus(RiderStatus.ARRIVE);
@@ -507,12 +510,16 @@ public class OrderInfoService {
     public OrderInfoDTO toDto(OrderInfo orderInfo) {
         OrderInfoDTO dto = new OrderInfoDTO();
         BeanUtil.copyProperties(orderInfo, dto);
-        if (orderInfo.getRiderId() != null) {
-            riderRepo.findById(orderInfo.getRiderId()).ifPresent(rider -> {
+        Long riderId = orderInfo.getRiderId();
+        if (riderId != null) {
+            riderRepo.findById(riderId).ifPresent(rider -> {
                 dto.setJobNumber(rider.getJobNumber());
                 dto.setRiderName(rider.getUser().getNickname());
                 dto.setRUserId(rider.getUserId());
             });
+            RiderLocation location = riderLocationRepo.findLastByRiderId(riderId)
+                    .orElseThrow(new BusinessException("无骑手位置"));
+            dto.setLocation(location.getLongitude() + "," + location.getLatitude());
         }
         dto.setNickname(orderInfo.getUser().getNickname());
 //        userRepo.findById(orderInfo.getUserId()).ifPresent(u -> dto.setNickname(u.getNickname()));
@@ -521,6 +528,8 @@ public class OrderInfoService {
             dto.setMerShowName(merchant.getShowName());
             dto.setMerLocation(merchant.getLongitude() + "," + merchant.getLatitude());
             dto.setMerAddress(merchant.getAddress());
+            dto.setMid(merchant.getId());
+            dto.setMerLogo(merchant.getLogo());
         });
 
         return dto;

+ 15 - 9
src/main/vue/src/views/OrderInfoEdit.vue

@@ -9,15 +9,17 @@
                     <div class="text item">{{address.info}}</div>
                 </el-card>-->
 
-                <el-input v-model="formData.nickname"></el-input>
+               <!-- <el-input v-model="formData.nickname" readonly></el-input>-->
+                <el-card shadow="hover" class="rt-card">{{formData.nickname}}</el-card>
             </el-form-item>
             <el-form-item prop="userAddress" label="配送地址">
-                <el-input v-model="address.name" style="width: 100px;padding-right: 10px"></el-input>
-                <el-input v-model="address.phone" style="width: 150px"></el-input>
-                <el-input type="textarea" v-model="address.info" style="padding-top: 10px"></el-input>
+                <el-input v-model="address.name" style="width: 100px;padding-right: 10px" readonly></el-input>
+                <el-input v-model="address.phone" style="width: 150px" readonly></el-input>
+                <el-input type="textarea" v-model="address.info" style="padding-top: 10px" readonly></el-input>
             </el-form-item>
-            <el-form-item prop="merchantShowName" label="商户">
-                <el-input v-model="formData.merchantShowName"></el-input>
+            <el-form-item prop="merShowName" label="商户">
+                <!--<el-input v-model="formData.merchantShowName" readonly></el-input>-->
+                <el-card shadow="hover" class="rt-card">{{formData.merShowName}}</el-card>
             </el-form-item>
             <el-form-item prop="merchantStatus" label="商家状态">
                 <!--<el-select v-model="formData.merchantStatus" disabled placeholder="请选择">
@@ -38,11 +40,11 @@
             <!--                <el-input v-model="formData.merchantAddress"></el-input>-->
             <!--            </el-form-item>-->
             <el-form-item prop="riderName" label="骑手">
-                <el-input v-model="formData.riderName"></el-input>
-                <!--<el-button type="primary" @click="changeStatus">{{formData.riderStatus}}</el-button>-->
+                <!--<el-input v-model="formData.riderName"></el-input>-->
+                <el-card shadow="hover" class="rt-card">{{formData.riderName!=null?formData.riderName:'暂无'}}</el-card>
             </el-form-item>
             <el-form-item prop="jobNumber" label="骑手工号">
-                <el-input v-model="formData.jobNumber"></el-input>
+                <el-input v-model="formData.jobNumber" readonly></el-input>
                 <!--<el-button type="primary" @click="changeStatus">{{formData.riderStatus}}</el-button>-->
             </el-form-item>
 
@@ -320,4 +322,8 @@
     }
 </script>
 <style lang="less" scoped>
+    .rt-card /deep/ .el-card__body {
+        padding: 3px 15px !important;
+        color: #606266;
+    }
 </style>

+ 1 - 1
src/main/vue/src/views/OrderInfoList.vue

@@ -40,7 +40,7 @@
             <!--            <el-table-column prop="userAddress" label="配送地址"
                         >
                         </el-table-column>-->
-            <el-table-column prop="merchantShowName" label="商户名称"
+            <el-table-column prop="merShowName" label="商户名称"
             >
             </el-table-column>
             <el-table-column prop="merchantStatus" label="商家状态"

+ 19 - 10
src/main/vue/src/views/backstage/EmailEdit.vue

@@ -1,23 +1,32 @@
 <template>
     <div class="edit-view">
-        <el-form :model="formData" :rules="rules" ref="form" label-width="66px" label-position="right" size="small"
+        <el-form :model="formData" :rules="rules" ref="form" label-width="90px" label-position="right" size="small"
                  style="max-width: 500px;">
-            <el-form-item prop="sendUserId" label="发件人">
-                <el-input v-model="formData.sendUserId"></el-input>
+            <el-form-item prop="receiveAvatar" label="接收人头像">
+               <!-- <el-input v-model="formData.receiveAvatar"></el-input>-->
+                <el-image style="width: 120px; height: 120px"
+                          :src="formData.receiveAvatar" fit="cover"
+                          :preview-src-list="[formData.receiveAvatar]">
+                    <div slot="error">
+                        <el-image style="width: 120px; height: 120px"
+                                  src="https://idingdong.oss-cn-hangzhou.aliyuncs.com/image/2020-08-07-17-26-23hRwKPxhh.gif"
+                                  fit="cover"/>
+                    </div>
+                </el-image>
             </el-form-item>
-            <el-form-item prop="receiveUserId" label="收件人">
-                <el-input v-model="formData.receiveUserId"></el-input>
+            <el-form-item prop="receiveNickname" label="接收人昵称">
+                <el-input v-model="formData.receiveNickname" readonly></el-input>
             </el-form-item>
             <el-form-item prop="title" label="标题">
-                <el-input v-model="formData.title"></el-input>
+                <el-input v-model="formData.title" readonly></el-input>
             </el-form-item>
             <el-form-item prop="content" label="内容">
-                <el-input type="textarea" v-model="formData.content"></el-input>
+                <el-input type="textarea" v-model="formData.content" readonly></el-input>
             </el-form-item>
             <el-form-item>
-                <el-button @click="onSave" :loading="saving"
+                <!--<el-button @click="onSave" :loading="saving"
                            type="primary">保存
-                </el-button>
+                </el-button>-->
                 <el-button @click="onDelete" :loading="saving"
                            type="danger" v-if="formData.id">删除
                 </el-button>
@@ -32,7 +41,7 @@
         created() {
             if (this.$route.query.id) {
                 this.$http
-                    .get('email/get/' + this.$route.query.id)
+                    .get('email/getDto/' + this.$route.query.id)
                     .then(res => {
                         this.formData = res;
                     })

+ 29 - 21
src/main/vue/src/views/backstage/EmailList.vue

@@ -1,5 +1,5 @@
 <template>
-    <div  class="list-view">
+    <div class="list-view">
         <div class="filters-container">
             <el-input placeholder="输入关键字" v-model="search" clearable
                       class="filter-item"></el-input>
@@ -23,25 +23,33 @@
             </el-table-column>
             <el-table-column prop="id" label="ID" width="100">
             </el-table-column>
-                                <el-table-column prop="sendUserId" label="发件人"
->
-                    </el-table-column>
-                    <el-table-column prop="receiveUserId" label="收件人"
->
-                    </el-table-column>
-                    <el-table-column prop="title" label="标题"
->
-                    </el-table-column>
-                    <el-table-column prop="content" label="内容"
->
-                    </el-table-column>
+            <el-table-column prop="receiveAvatar" label="接收人头像"
+            >
+                <template slot-scope="{row}">
+                    <el-image style="width: 30px; height: 30px"
+                              :src="row.receiveAvatar" fit="cover"
+                              :preview-src-list="[row.receiveAvatar]"></el-image>
+                </template>
+            </el-table-column>
+            <el-table-column prop="receiveNickname" label="接收人昵称"
+            >
+            </el-table-column>
+            <el-table-column prop="name" label="名称"
+            >
+            </el-table-column>
+            <!--<el-table-column prop="title" label="标题"
+            >
+            </el-table-column>-->
+            <el-table-column prop="content" label="内容"
+            >
+            </el-table-column>
             <el-table-column
                     label="操作"
                     align="center"
                     fixed="right"
                     min-width="150">
                 <template slot-scope="{row}">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>详情</el-button>
                     <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
                 </template>
             </el-table-column>
@@ -66,7 +74,7 @@
     </div>
 </template>
 <script>
-    import { mapState } from "vuex";
+    import {mapState} from "vuex";
     import pageableTable from "@/mixins/pageableTable";
 
     export default {
@@ -79,7 +87,7 @@
             return {
                 multipleMode: false,
                 search: "",
-                url: "/email/all",
+                url: "/email/allDto",
                 downloading: false,
             }
         },
@@ -91,7 +99,7 @@
         methods: {
             beforeGetData() {
                 if (this.search) {
-                    return { search: this.search };
+                    return {search: this.search};
                 }
             },
             toggleMultipleMode(multipleMode) {
@@ -104,7 +112,7 @@
                 this.$router.push({
                     path: "/emailEdit",
                     query: {
-                    ...this.$route.query
+                        ...this.$route.query
                     }
                 });
             },
@@ -112,16 +120,16 @@
                 this.$router.push({
                     path: "/emailEdit",
                     query: {
-                    id: row.id
+                        id: row.id
                     }
                 });
             },
             download() {
                 this.downloading = true;
                 this.$axios
-                    .get("/email/excel", { 
+                    .get("/email/excel", {
                         responseType: "blob",
-                        params: { size: 10000 }
+                        params: {size: 10000}
                     })
                     .then(res => {
                         console.log(res);

+ 0 - 1
src/test/java/com/izouma/dingdong/service/ChatServiceTest.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service;
 
-import com.izouma.dingdong.dto.PageQuery;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;