licailing пре 5 година
родитељ
комит
8a32328dce

+ 3 - 0
src/main/java/com/izouma/dingdong/domain/User.java

@@ -101,6 +101,9 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "多少时间不可点单", name = "notOrder")
     private Integer notOrder;
 
+//    @ApiModelProperty(value = "可不可以货到付款", name = "canCash")
+//    private Boolean canCash;
+
 /*    //默认用户名
     public String getDefaultUsername(String phone) {
         return phone.replace(phone.substring(3, 7), "****");

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

@@ -11,6 +11,7 @@ import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.domain.user.UserCoupon;
+import com.izouma.dingdong.dto.OrderInfoDTO;
 import com.izouma.dingdong.dto.UserOrderDTO;
 import com.izouma.dingdong.enums.*;
 import com.izouma.dingdong.exception.BusinessException;
@@ -63,10 +64,16 @@ public class OrderInfoService {
     用户下单
      */
     public OrderInfo userOrder(UserOrderDTO userOrderDTO) {
-
+        //购物车
         ShoppingCart cart = shoppingCartRepo.findById(userOrderDTO.getShoppingCartId())
                 .orElseThrow(new BusinessException("不存在"));
 
+        //查找用户
+        User user = userRepo.findById(cart.getUserId()).orElseThrow(new BusinessException("无用户"));
+        if (user.getBlacklist()) {
+            throw new BusinessException("你已加入黑名单");
+        }
+
         //商家
         MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(cart.getMerchantId())
                 .orElseThrow(new BusinessException("无商家"));
@@ -132,6 +139,16 @@ public class OrderInfoService {
 
         //货到付款不能使用优惠券
         if (PayMethod.CASH_DELIVERY.equals(userOrderDTO.getPayMethod())) {
+            if (user.getNotOrder() == -1) {
+                throw new BusinessException("不可以使用货到付款");
+            } else if (user.getNotOrder() != 0 && user.getNotOrder() != -1) {
+                List<OrderInfo> orderInfos = orderInfoRepo.findAllByUserId(cart.getUserId());
+                orderInfos.sort((a, b) -> b.getOrderTime().compareTo(a.getOrderTime()));
+                LocalDateTime orderTime = orderInfos.get(0).getOrderTime();
+                if (orderTime.plusHours(user.getNotOrder()).isAfter(now)) {
+                    throw new BusinessException("请稍后再点单");
+                }
+            }
             if (ObjectUtil.isNotNull(userOrderDTO.getUserCouponId())) {
                 throw new BusinessException("货到付款不能使用优惠券");
             }
@@ -437,8 +454,23 @@ public class OrderInfoService {
             }
             userRepo.save(user);
         }
+    }
 
+    public OrderInfoDTO toDto(OrderInfo orderInfo) {
+        OrderInfoDTO dto = new OrderInfoDTO();
+        BeanUtil.copyProperties(orderInfo, dto);
+        if (orderInfo.getRiderId() != null) {
+            riderRepo.findById(orderInfo.getRiderId()).ifPresent(r -> {
+                dto.setJobNumber(r.getJobNumber());
+                dto.setRiderName(r.getUser().getNickname());
+            });
+        }
+//        dto.setNickname(orderInfo.getUser().getNickname());
+        userRepo.findById(orderInfo.getUserId()).ifPresent(u -> dto.setNickname(u.getNickname()));
+//        dto.setMerchantShowName(orderInfo.getMerchant().getShowName());
+        merchantRepo.findById(orderInfo.getMerchantId()).ifPresent(m -> dto.setMerchantShowName(m.getShowName()));
 
+        return dto;
     }
 
 }

+ 15 - 0
src/main/java/com/izouma/dingdong/service/UserService.java

@@ -230,4 +230,19 @@ public class UserService {
         return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
     }
 
+    /*
+    货到付款权限
+     */
+    public void cashAuthority(Long userId, Boolean can) {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
+        if (can) {
+            user.setNotOrder(0);
+            userRepo.save(user);
+            return;
+        }
+        user.setNotOrder(-1);
+        userRepo.save(user);
+
+    }
+
 }

+ 5 - 4
src/main/java/com/izouma/dingdong/service/sms/TencentSmsService.java

@@ -45,20 +45,21 @@ public class TencentSmsService {
         try {
             // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey
             Credential cred = new Credential(secretId, secretKey);
-            //请求
+            //请求李心洁
             HttpProfile httpProfile = new HttpProfile();
             httpProfile.setEndpoint("sms.tencentcloudapi.com");
 
             ClientProfile clientProfile = new ClientProfile();
             clientProfile.setHttpProfile(httpProfile);
 
-            SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
+            SmsClient client = new SmsClient(cred, "", clientProfile);
 
             String params = "{\"PhoneNumberSet\":[\"" + phone
                     + "\"],\"TemplateID\":\"" + templateId
                     + "\",\"Sign\":\"" + smsSign
                     + "\",\"TemplateParamSet\":[\"" + param
                     + "\"],\"SmsSdkAppid\":\"" + appId + "\"}";
+
             //发送请求
             SendSmsRequest req = SendSmsRequest.fromJsonString(params, SendSmsRequest.class);
             //回调
@@ -70,8 +71,8 @@ public class TencentSmsService {
             }
             //报错到sms表
             smsRecordRepo.expire(phone);
-//            String sessionId = RandomStringUtils.randomAlphabetic(10);
-            String sessionId = resp.getRequestId();
+            String sessionId = RandomStringUtils.randomAlphabetic(10);
+//            String sessionId = resp.getRequestId();
             smsRecordRepo.save(SmsRecord.builder()
                     .sessionId(sessionId)
                     .phone(phone)

+ 3 - 1
src/main/java/com/izouma/dingdong/service/user/ShoppingCartService.java

@@ -19,6 +19,7 @@ import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.merchant.FullReductionRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
+import com.izouma.dingdong.service.SysConfigService;
 import com.izouma.dingdong.service.rider.DeliveryFeeService;
 import com.izouma.dingdong.utils.MapUtils;
 import lombok.AllArgsConstructor;
@@ -41,6 +42,7 @@ public class ShoppingCartService {
     private OrderGoodsSpecRepo   orderGoodsSpecRepo;
     private DeliveryFeeService   deliveryFeeService;
     private MerchantRepo         merchantRepo;
+    private SysConfigService     sysConfigService;
 
     //改订单规格
     public void changeOrderSpec(ShoppingCart cart, OrderGoodsSpec orderGoodsSpec) {
@@ -187,7 +189,7 @@ public class ShoppingCartService {
         Merchant merchant = merchantRepo.findById(merchantId).orElseThrow(new BusinessException("无商户"));
         //判断是否配送距离内
         Double distance = MapUtils.distance(longitude, latitude, merchant.getLongitude(), merchant.getLatitude());
-        if (distance > 3000) {
+        if (distance > sysConfigService.getRange()) {
             throw new BusinessException("超出配送范围");
         }
 

+ 6 - 26
src/main/java/com/izouma/dingdong/web/OrderInfoController.java

@@ -1,8 +1,6 @@
 package com.izouma.dingdong.web;
 
-import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
-import com.izouma.dingdong.domain.Appraisal;
 import com.izouma.dingdong.domain.OrderInfo;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.dto.OrderInfoDTO;
@@ -22,7 +20,6 @@ import com.izouma.dingdong.utils.excel.ExcelUtils;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -65,7 +62,7 @@ public class OrderInfoController extends BaseController {
     @GetMapping("/get/{id}")
     public OrderInfoDTO get(@PathVariable Long id) {
         OrderInfo orderInfo = orderInfoRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-        OrderInfoDTO dto = this.toDto(orderInfo);
+        OrderInfoDTO dto = orderInfoService.toDto(orderInfo);
 
         //评价ID插入
         if (orderInfo.getRated()) {
@@ -123,12 +120,12 @@ public class OrderInfoController extends BaseController {
     }
 
 
-    @PostMapping("/list")
+/*    @PostMapping("/list")
     @ApiOperation("/按userId查订单")
-    public Page<OrderInfo> list(Long id, PageQuery pageQuery) {
+    public Page<OrderInfoDTO> list(Long id, PageQuery pageQuery) {
         //        new PageImpl<>(list,toPageRequest(pageQuery),pageQuery.getSize())
-        return new PageImpl<>(orderInfoService.my(id), toPageRequest(pageQuery), pageQuery.getSize());
-    }
+        return new PageImpl<>(orderInfoService.my(id), toPageRequest(pageQuery), pageQuery.getSize()).map(orderInfoService::toDto);
+    }*/
 
     @GetMapping("/received")
     @ApiOperation("商家手动接单")
@@ -181,24 +178,7 @@ public class OrderInfoController extends BaseController {
     @GetMapping("/blackAll")
     public Page<OrderInfoDTO> blackAll(PageQuery pageQuery) {
         return orderInfoRepo.findAll(toSpecification(pageQuery, OrderInfo.class), toPageRequest(pageQuery))
-                .map(this::toDto);
-    }
-
-    public OrderInfoDTO toDto(OrderInfo orderInfo) {
-        OrderInfoDTO dto = new OrderInfoDTO();
-        BeanUtil.copyProperties(orderInfo, dto);
-        if (orderInfo.getRiderId() != null) {
-            riderRepo.findById(orderInfo.getRiderId()).ifPresent(r -> {
-                dto.setJobNumber(r.getJobNumber());
-                dto.setRiderName(r.getUser().getNickname());
-            });
-        }
-        dto.setNickname(orderInfo.getUser().getNickname());
-        dto.setMerchantShowName(orderInfo.getMerchant().getShowName());
-
-        return dto;
+                .map(orderInfoService::toDto);
     }
-
-
 }
 

+ 13 - 5
src/main/java/com/izouma/dingdong/web/UserController.java

@@ -31,7 +31,7 @@ import java.util.Map;
 @RestController
 @RequestMapping("/user")
 public class UserController extends BaseController {
-    private UserRepo userRepo;
+    private UserRepo    userRepo;
     private UserService userService;
 
     @PostMapping("/register")
@@ -48,7 +48,7 @@ public class UserController extends BaseController {
         return userRepo.save(user);
     }
 
-//    @PreAuthorize("hasRole('ADMIN')")
+    //    @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public User save(@RequestBody User user) {
         if (user.getId() != null) {
@@ -65,7 +65,8 @@ public class UserController extends BaseController {
 
     @GetMapping("/my")
     public User my() {
-        return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("用户不存在"));
+        return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId())
+                .orElseThrow(new BusinessException("用户不存在"));
     }
 
     @PreAuthorize("hasRole('ADMIN')")
@@ -107,18 +108,25 @@ public class UserController extends BaseController {
     public Page<User> allUser(PageQuery pageQuery) {
         Map<String, Object> query = pageQuery.getQuery();
         //只查找身份为user的
-        query.put("identity","USER");
+        query.put("identity", "USER");
         //拉入黑名单的不显示
-        query.put("blacklist","false");
+        query.put("blacklist", "false");
         pageQuery.setQuery(query);
         return userRepo.findAll(toSpecification(pageQuery, User.class), toPageRequest(pageQuery));
     }
 
     @GetMapping("/allAdmin")
+    @ApiOperation("管理员身份")
     public Page<User> allAdmin(PageQuery pageQuery) {
         //List<User> users = userRepo.findAllByAuthoritiesNotContains(Authority.getInstance(Authority.NAMES.ROLE_USER));
         List<User> users = userRepo.findAllByIdentity(Identity.ADMIN);
         return new PageImpl<>(users, toPageRequest(pageQuery), pageQuery.getPage());
     }
 
+    @GetMapping("/canCash")
+    @ApiOperation("可以现金支付")
+    public void canCash(Long userId, Boolean can) {
+        userService.cashAuthority(userId, can);
+    }
+
 }

+ 10 - 6
src/main/vue/src/views/OrderInfoList.vue

@@ -32,14 +32,14 @@
                              width="50">
             </el-table-column>
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"></el-table-column>
-       <!--     <el-table-column prop="id" label="ID" width="100">
-            </el-table-column>-->
+            <!--     <el-table-column prop="id" label="ID" width="100">
+                 </el-table-column>-->
             <el-table-column prop="nickname" label="用户"
             >
             </el-table-column>
-<!--            <el-table-column prop="userAddress" label="配送地址"
-            >
-            </el-table-column>-->
+            <!--            <el-table-column prop="userAddress" label="配送地址"
+                        >
+                        </el-table-column>-->
             <el-table-column prop="merchantShowName" label="商户名称"
             >
             </el-table-column>
@@ -213,11 +213,15 @@
                 return '';
             },
             beforeGetData() {
-
+                let userId = null;
+                if (this.$route.query.userId != null) {
+                    userId = this.$route.query.userId;
+                }
                 return {
                     search: this.search,
                     query: {
                         status: this.status,
+                        userId: userId,
                     },
                     sort: "createdAt,desc"
                 };

+ 136 - 113
src/main/vue/src/views/merchant/MerchantEdit.vue

@@ -17,90 +17,90 @@
             <el-form-item prop="introduction" label="简介">
                 <el-input type="textarea" v-model="formData.introduction" :rows="2" readonly></el-input>
             </el-form-item>
-<!--            <el-form-item prop="proclamation" label="公告">
-                <el-input type="textarea" v-model="formData.proclamation" :rows="2"></el-input>
-            </el-form-item>-->
-<!--            <el-form-item prop="banner" label="banner">
-                <single-upload v-model="formData.banner"></single-upload>
-            </el-form-item>-->
-<!--            <el-form-item prop="img" label="图片">
-                <multi-upload v-model="formData.img"></multi-upload>
-            </el-form-item>-->
-<!--            <el-form-item prop="address" label="地址">
-                <el-input v-model="formData.address"></el-input>
-            </el-form-item>-->
+            <!--            <el-form-item prop="proclamation" label="公告">
+                            <el-input type="textarea" v-model="formData.proclamation" :rows="2"></el-input>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="banner" label="banner">
+                            <single-upload v-model="formData.banner"></single-upload>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="img" label="图片">
+                            <multi-upload v-model="formData.img"></multi-upload>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="address" label="地址">
+                            <el-input v-model="formData.address"></el-input>
+                        </el-form-item>-->
             <el-form-item prop="phone" label="手机">
                 <el-input v-model="formData.phone" readonly></el-input>
             </el-form-item>
-<!--            <el-form-item prop="password" label="密码">
-                <el-input v-model="formData.password" show-password></el-input>
-            </el-form-item>-->
-<!--            <el-form-item prop="qualification" label="营业资质">
-                <multi-upload v-model="formData.qualification"></multi-upload>
-            </el-form-item>-->
-<!--            <el-form-item prop="businessNatureId" label="营业性质">-->
-                <!--<el-input v-model="formData.businessNature"></el-input>-->
-<!--                <el-select v-model="formData.businessNature"-->
-<!--                           placeholder="请选择" value-key="value">-->
-<!--                    <el-option value="自营">自营</el-option>-->
-<!--                    <el-option value="连锁">连锁</el-option>-->
-<!--                    <el-option value="加盟">加盟</el-option>-->
-<!--                </el-select>-->
-<!--            </el-form-item>-->
-<!--            <el-form-item prop="week" label="周几" id="week">
-                <el-select v-model="formData.week" multiple
-                           placeholder="请选择" value-key="value">
-                    <el-option value="MONDAY">MONDAY</el-option>
-                    <el-option value="TUESDAY">TUESDAY</el-option>
-                    <el-option value="WEDNESDAY">WEDNESDAY</el-option>
-                    <el-option value="THURSDAY">THURSDAY</el-option>
-                    <el-option value="FRIDAY">FRIDAY</el-option>
-                    <el-option value="SATURDAY">SATURDAY</el-option>
-                    <el-option value="SUNDAY">SUNDAY</el-option>
-                </el-select>
-            </el-form-item>-->
-<!--            <el-form-item prop="startTime" label="营业时间">
-                <el-time-picker
-                        v-model="formData.startTime"
-                        value-format="HH:mm:ss"
-                        placeholder="选择时间"
-                >
-                </el-time-picker>
-            </el-form-item>
-            <el-form-item prop="endTime" label="营业时间">
-                <el-time-picker
-                        v-model="formData.endTime"
-                        value-format="HH:mm:ss"
-                        placeholder="选择时间"
-                >
-                </el-time-picker>-->
-                <!--  <el-time-picker
-                        is-range
-                        v-model="formData.startTime"
-                        value-format="HH:mm:ss"
-                        range-separator="至"
-                        start-placeholder="开始时间"
-                        end-placeholder="结束时间"
-                        placeholder="选择时间范围">
-                </el-time-picker>
-            </el-form-item>-->
+            <!--            <el-form-item prop="password" label="密码">
+                            <el-input v-model="formData.password" show-password></el-input>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="qualification" label="营业资质">
+                            <multi-upload v-model="formData.qualification"></multi-upload>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="businessNatureId" label="营业性质">-->
+            <!--<el-input v-model="formData.businessNature"></el-input>-->
+            <!--                <el-select v-model="formData.businessNature"-->
+            <!--                           placeholder="请选择" value-key="value">-->
+            <!--                    <el-option value="自营">自营</el-option>-->
+            <!--                    <el-option value="连锁">连锁</el-option>-->
+            <!--                    <el-option value="加盟">加盟</el-option>-->
+            <!--                </el-select>-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item prop="week" label="周几" id="week">
+                            <el-select v-model="formData.week" multiple
+                                       placeholder="请选择" value-key="value">
+                                <el-option value="MONDAY">MONDAY</el-option>
+                                <el-option value="TUESDAY">TUESDAY</el-option>
+                                <el-option value="WEDNESDAY">WEDNESDAY</el-option>
+                                <el-option value="THURSDAY">THURSDAY</el-option>
+                                <el-option value="FRIDAY">FRIDAY</el-option>
+                                <el-option value="SATURDAY">SATURDAY</el-option>
+                                <el-option value="SUNDAY">SUNDAY</el-option>
+                            </el-select>
+                        </el-form-item>-->
+            <!--            <el-form-item prop="startTime" label="营业时间">
+                            <el-time-picker
+                                    v-model="formData.startTime"
+                                    value-format="HH:mm:ss"
+                                    placeholder="选择时间"
+                            >
+                            </el-time-picker>
+                        </el-form-item>
+                        <el-form-item prop="endTime" label="营业时间">
+                            <el-time-picker
+                                    v-model="formData.endTime"
+                                    value-format="HH:mm:ss"
+                                    placeholder="选择时间"
+                            >
+                            </el-time-picker>-->
+            <!--  <el-time-picker
+                    is-range
+                    v-model="formData.startTime"
+                    value-format="HH:mm:ss"
+                    range-separator="至"
+                    start-placeholder="开始时间"
+                    end-placeholder="结束时间"
+                    placeholder="选择时间范围">
+            </el-time-picker>
+        </el-form-item>-->
             <!--            <el-form-item prop="blacklist" label="黑名单">
                             <el-switch v-model="formData.blacklist"></el-switch>
                         </el-form-item>-->
- <!--           <el-form-item prop="firstOrder" label="首单优惠">
-                <el-input-number type="number" v-model="formData.firstOrder"></el-input-number>
-            </el-form-item>
-            <el-form-item prop="newUser" label="新用户优惠">
-                <el-input-number type="number" v-model="formData.newUser"></el-input-number>
-            </el-form-item>-->
-<!--            <el-form-item prop="category" label="经营品别">
-                <el-select v-model="formData.category" multiple
-                           placeholder="请选择" value-key="name">
-                    <el-option v-for="item in category" :key="item.name"
-                               :label="item.name" :value="item">
-                    </el-option>
-                </el-select>
-            </el-form-item>-->
+            <!--           <el-form-item prop="firstOrder" label="首单优惠">
+                           <el-input-number type="number" v-model="formData.firstOrder"></el-input-number>
+                       </el-form-item>
+                       <el-form-item prop="newUser" label="新用户优惠">
+                           <el-input-number type="number" v-model="formData.newUser"></el-input-number>
+                       </el-form-item>-->
+            <!--            <el-form-item prop="category" label="经营品别">
+                            <el-select v-model="formData.category" multiple
+                                       placeholder="请选择" value-key="name">
+                                <el-option v-for="item in category" :key="item.name"
+                                           :label="item.name" :value="item">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>-->
             <!--  <el-form-item prop="tag" label="标签">
                      <el-tree
                        :props="props"
@@ -110,16 +110,16 @@
                        @check-change="handleCheckChange">
                       </el-tree>
             </el-form-item> -->
-<!--            <el-form-item prop="aliName" label="支付宝名称">
-                <el-input v-model="formData.aliName"></el-input>
-            </el-form-item>
-            <el-form-item prop="aliAccount" label="支付宝账户">
-                <el-input v-model="formData.aliAccount"></el-input>
-            </el-form-item>-->
+            <!--            <el-form-item prop="aliName" label="支付宝名称">
+                            <el-input v-model="formData.aliName"></el-input>
+                        </el-form-item>
+                        <el-form-item prop="aliAccount" label="支付宝账户">
+                            <el-input v-model="formData.aliAccount"></el-input>
+                        </el-form-item>-->
             <el-form-item prop="promo" label="推广语" v-if="formData.status==='SUCCESS'">
                 <el-input v-model="formData.promo"></el-input>
             </el-form-item>
-            <el-form-item prop="failure" label="失败原因"  v-if="formData.status==='DENY'">
+            <el-form-item prop="failure" label="失败原因" v-if="formData.status==='DENY'">
                 <el-input type="textarea" v-model="formData.failure" readonly></el-input>
             </el-form-item>
             <el-form-item prop="priority" label="优先级">
@@ -130,8 +130,22 @@
             <el-form-item prop="buyAlliance" label="口碑联盟">
                 <el-switch v-model="formData.rated"></el-switch>
             </el-form-item>
-
-
+            <el-form-item label="实名信息">
+                <el-card>
+                    <div class="info-item">法人姓名:{{verified.realName}}</div>
+                    <div class="info-item">法人身份证:{{verified.idNo}}</div>
+                    <div class="info-item">身份证照片:
+                        <el-image style="width: 30px; height: 30px"
+                                  :src="picList(verified.idNoImg)[0]" fit="fit"
+                                  :preview-src-list="picList(verified.idNoImg)?picList(verified.idNoImg):[]"/>
+                    </div>
+                    <div class="info-item">手持身份证:
+                        <el-image style="width: 30px; height: 30px"
+                                  :src="verified.handheldIdNo" fit="fit"
+                                  :preview-src-list="[verified.handheldIdNo]"/>
+                    </div>
+                </el-card>
+            </el-form-item>
             <el-form-item>
                 <black-button></black-button>
                 <el-button @click="onSave" :loading="saving"
@@ -159,17 +173,18 @@
                         console.log(e);
                         this.$message.error(e.error);
                     });
+                this.$http
+                    .get('/verified/user', {
+                        userId: this.formData.userId
+                    })
+                    .then(res => {
+                        this.verified = res;
+                    })
+                    .catch(e => {
+                        console.log(e);
+                        this.$message.error(e.error);
+                    });
             }
-/*            this.$http
-                .get('/category/tree', {
-                    id: 1
-                })
-                .then(res => {
-                    this.category = res;
-                })
-                .catch(e => {
-                    console.log(e);
-                });*/
         },
         data() {
             return {
@@ -180,9 +195,17 @@
                 },
                 rules: {},
                 category: [],
+                verified: {},
             }
         },
         methods: {
+            picList(row) {
+                if (row) {
+                    return row.split(",");
+                } else {
+                    return "";
+                }
+            },
             onSave() {
                 this.$refs.form.validate((valid) => {
                     if (valid) {
@@ -212,22 +235,22 @@
                         this.$message.error(e.error);
                     });
             },
-/*            onDelete() {
-                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
-                    return this.$http.post(`/merchant/del/${this.formData.id}`)
-                }).then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                }).catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error(e.error);
-                    }
-                })
-            },*/
-/*            handleChange(name) {
-                console.log(name);
-            }*/
+            /*            onDelete() {
+                            this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                                return this.$http.post(`/merchant/del/${this.formData.id}`)
+                            }).then(() => {
+                                this.$message.success('删除成功');
+                                this.$router.go(-1);
+                            }).catch(e => {
+                                if (e !== 'cancel') {
+                                    console.log(e);
+                                    this.$message.error(e.error);
+                                }
+                            })
+                        },*/
+            /*            handleChange(name) {
+                            console.log(name);
+                        }*/
         }
     }
 </script>

+ 31 - 7
src/main/vue/src/views/merchant/MerchantList.vue

@@ -216,10 +216,20 @@
             </div>
         </el-drawer>
 
+        <el-dialog title="报表" :visible.sync="showReportDialog" center width="500px">
+            <el-table :data="reports" ref="table">
+                <el-table-column prop="name" label="时间"></el-table-column>
+                <el-table-column prop="likes" label="点赞数"></el-table-column>
+                <el-table-column prop="bad" label="差评数"></el-table-column>
+                <el-table-column prop="sale" label="销量"></el-table-column>
+                <el-table-column prop="income" label="收入"></el-table-column>
 
-        <report-dialog :visible.sync="showReportDialog"
-                           v-model="formData"></report-dialog>
+            </el-table>
+        </el-dialog>
 
+        <!--  <report-dialog :visible.sync="showReportDialog"
+                             v-model="formData"></report-dialog>
+  -->
     </div>
 </template>
 <script>
@@ -253,6 +263,7 @@
                 dateRange: [],
                 verified: {},
                 showReportDialog: false,
+                reports: [],
 
                 pickerOptions: {
                     shortcuts: [
@@ -307,10 +318,10 @@
             }
         },
         methods: {
-            showReport(row) {
-                this.showReportDialog = true;
-                this.$route.query.mid = row.mid;
-            },
+            /*            showReport(row) {
+                            this.showReportDialog = true;
+                            this.$route.query.mid = row.mid;
+                        },*/
             picList(row) {
                 if (row) {
                     return row.split(",");
@@ -514,10 +525,23 @@
                     }
                 });
             },
+            showReport(row) {
+                this.showReportDialog = true;
+                this.$http
+                    .get('/sales/report', {
+                        mid: row.mid
+                    })
+                    .then(res => {
+                        this.reports = res;
+                    })
+                    .catch(e => {
+                        console.log(e);
+                    });
+            }
 
         },
         components: {
-            ReportDialog,
+            // ReportDialog,
         }
     }
 </script>

+ 17 - 54
src/main/vue/src/views/user/UserEdit.vue

@@ -7,7 +7,7 @@
             </el-form-item>
             <el-form-item prop="username" label="用户名">
                 <el-input v-model="formData.username" readonly></el-input>
-<!--                <el-card>{{formData.username}}</el-card>-->
+                <!--                <el-card>{{formData.username}}</el-card>-->
             </el-form-item>
             <el-form-item prop="nickname" label="昵称">
                 <el-input v-model="formData.nickname" readonly></el-input>
@@ -19,6 +19,10 @@
             <!--    <el-form-item v-else prop="password" label="密码">
                     <el-input v-model="formData.password"></el-input>
                 </el-form-item>-->
+            <el-form-item prop="notOrder" label="货到付款">
+                <el-switch v-model="formData.notOrder!==-1"></el-switch>
+                <el-button @click="" type="primary" size="mini" plain style="margin-left: 10px">取消</el-button>
+            </el-form-item>
             <el-form-item prop="phone" label="手机">
                 <el-input v-model="formData.phone" readonly></el-input>
             </el-form-item>
@@ -41,9 +45,7 @@
                 <el-button @click="showCoupon" :loading="$store.state.fetchingData"
                            type="primary" v-if="formData.id">发送优惠券
                 </el-button>
-                <el-button @click="showOrder" :loading="$store.state.fetchingData"
-                           type="primary" v-if="formData.id">订单
-                </el-button>
+
                 <el-button @click="$router.go(-1)">返回</el-button>
             </el-form-item>
         </el-form>
@@ -70,21 +72,7 @@
                 <el-button @click="operation1">确定</el-button>
             </div>
         </el-dialog>
-        <el-dialog
-                title="订单列表"
-                center
-                :visible.sync="dialogTableOrder"
-        >
-            <el-table :data="orders" ref="table">
-                <el-table-column prop="merchant.showName" label="商家"></el-table-column>
-                <el-table-column prop="riderId" label="骑手"></el-table-column>
-                <el-table-column prop="realAmount" label="实付金额"></el-table-column>
-                <el-table-column prop="remark" label="备注"></el-table-column>
-            </el-table>
-            <div class="pagination-wrapper">
-<!--                <el-button @click="operation1">确定</el-button>-->
-            </div>
-        </el-dialog>
+
     </div>
 </template>
 <script>
@@ -126,9 +114,9 @@
                     nickname: [
                         {required: true, message: '请输入昵称', trigger: 'blur'},
                     ],
-         /*           password: [
-                        {required: true, message: '请输入密码', trigger: 'blur'},
-                    ],*/
+                    /*           password: [
+                                   {required: true, message: '请输入密码', trigger: 'blur'},
+                               ],*/
                     phone: [
                         {
                             regexp: /^1[3-9]\d{9}$/,
@@ -145,7 +133,7 @@
                 // authorities: [],
                 dialogTableOrder: false,
                 orders: [],
-
+                grandTotal: 0
             };
         },
         computed: {
@@ -228,23 +216,6 @@
                     });
             },
 
-            issue(row) {
-                this.$http
-                    .post("/userCoupon/issue", {
-                            userId: this.formData.id,
-                            couponId: row.id,
-                        },
-                    )
-                    .then(res => {
-                        this.$message.success("发放成功");
-                        this.showSetLogistics = false;
-                        this.$router.go(0);
-                    })
-                    .catch(e => {
-                        console.log(e);
-                        this.$message.error(e.error || '发放失败');
-                    });
-            },
             operation1() {
                 /*this.$notify({
                     title: '发放',
@@ -279,23 +250,15 @@
                         console.log(e);
                     });
             },
-            showOrder() {
-                this.dialogTableOrder = true;
-                this.$http
-                    .post('/orderInfo/list', {
-                        id: this.formData.id,
-                    })
-                    .then(res => {
-                        this.orders = res.content;
-                        // console.log(this.orders)
-                    })
-                    .catch(e => {
-                        console.log(e);
-                    });
-            }
+
+
 
         },
     };
 </script>
 <style lang="less" scoped>
+    .right-text {
+        margin: 10px;
+        float: right
+    }
 </style>

+ 12 - 3
src/main/vue/src/views/user/UserList.vue

@@ -49,8 +49,9 @@
                 <template slot-scope="{row}">
                     <el-button @click="editRow(row)" type="primary" size="mini"
                         plain>详情</el-button>
-<!--                    <el-button @click="orderRow(row)" type="primary" size="mini"-->
-<!--                        plain>订单</el-button>-->
+                    <el-button @click="showAppraisal(row)"
+                               type="primary" plain>订单
+                    </el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -154,7 +155,15 @@ export default {
         },
         operation2() {
             this.$message("操作2");
-        }
+        },
+        showAppraisal(row) {
+            this.$router.push({
+                path: "/orderInfoList",
+                query: {
+                    userId: row.id,
+                }
+            });
+        },
     }
 };
 </script>

+ 1 - 1
src/test/java/com/izouma/dingdong/service/sms/TencentSmsTest.java

@@ -58,7 +58,7 @@ public class TencentSmsTest {
     @Test
     public void test1(){
       // smsService.pullSmsSend("+8613182976895");
-        System.out.println(smsService.sendVerify("+8618205083565"));
+        System.out.println(smsService.sendVerify("+8618205083565","674851"));
 
     }
 }