Jelajahi Sumber

Merge branch 'master' of http://git.izouma.com/licailing/dingdong

panhui 5 tahun lalu
induk
melakukan
d4a236bd97
100 mengubah file dengan 1430 tambahan dan 822 penghapusan
  1. 0 13
      pom.xml
  2. 530 0
      src/main/java/com/izouma/dingdong/config/ksher_pay_sdk.java
  3. 0 1
      src/main/java/com/izouma/dingdong/domain/BankCard.java
  4. 0 8
      src/main/java/com/izouma/dingdong/domain/Coupon.java
  5. 16 4
      src/main/java/com/izouma/dingdong/domain/OrderInfo.java
  6. 3 2
      src/main/java/com/izouma/dingdong/domain/OrderRefundApply.java
  7. 0 2
      src/main/java/com/izouma/dingdong/domain/WithdrawApply.java
  8. 0 1
      src/main/java/com/izouma/dingdong/domain/backstage/Banner.java
  9. 0 1
      src/main/java/com/izouma/dingdong/domain/backstage/ChatWords.java
  10. 0 3
      src/main/java/com/izouma/dingdong/domain/backstage/MerchantNature.java
  11. 2 0
      src/main/java/com/izouma/dingdong/domain/backstage/Priority.java
  12. 0 1
      src/main/java/com/izouma/dingdong/domain/backstage/Promote.java
  13. 0 1
      src/main/java/com/izouma/dingdong/domain/backstage/Tag.java
  14. 0 1
      src/main/java/com/izouma/dingdong/domain/merchant/Goods.java
  15. 0 1
      src/main/java/com/izouma/dingdong/domain/merchant/MerchantSettings.java
  16. 1 1
      src/main/java/com/izouma/dingdong/domain/rider/DeliveryFee.java
  17. 48 26
      src/main/java/com/izouma/dingdong/domain/rider/Rider.java
  18. 39 0
      src/main/java/com/izouma/dingdong/domain/rider/RiderSign.java
  19. 0 1
      src/main/java/com/izouma/dingdong/domain/user/Address.java
  20. 0 3
      src/main/java/com/izouma/dingdong/domain/user/ShoppingCart.java
  21. 0 35
      src/main/java/com/izouma/dingdong/dto/CategoryDTO.java
  22. 0 37
      src/main/java/com/izouma/dingdong/dto/GoodsSpecDTO.java
  23. 0 46
      src/main/java/com/izouma/dingdong/dto/MerchantClassificationDTO.java
  24. 0 1
      src/main/java/com/izouma/dingdong/dto/MerchantDTO.java
  25. 0 87
      src/main/java/com/izouma/dingdong/dto/OrderDTO.java
  26. 0 21
      src/main/java/com/izouma/dingdong/dto/OrderGoodsSpecDTO.java
  27. 35 0
      src/main/java/com/izouma/dingdong/dto/RiderDTO.java
  28. 27 0
      src/main/java/com/izouma/dingdong/dto/RiderDistanceDTO.java
  29. 1 0
      src/main/java/com/izouma/dingdong/dto/UserOrderDTO.java
  30. 0 19
      src/main/java/com/izouma/dingdong/enums/MerchantSort.java
  31. 6 1
      src/main/java/com/izouma/dingdong/enums/MerchantStatus.java
  32. 3 1
      src/main/java/com/izouma/dingdong/enums/RefundReason.java
  33. 10 5
      src/main/java/com/izouma/dingdong/enums/RiderStatus.java
  34. 0 1
      src/main/java/com/izouma/dingdong/repo/ChatRepo.java
  35. 0 1
      src/main/java/com/izouma/dingdong/repo/MoneyRecordRepo.java
  36. 17 1
      src/main/java/com/izouma/dingdong/repo/OrderInfoRepo.java
  37. 0 4
      src/main/java/com/izouma/dingdong/repo/backstage/CategoryRepo.java
  38. 0 4
      src/main/java/com/izouma/dingdong/repo/backstage/ChatWordsRepo.java
  39. 1 2
      src/main/java/com/izouma/dingdong/repo/backstage/PriorityRepo.java
  40. 0 1
      src/main/java/com/izouma/dingdong/repo/merchant/AutomaticResponseRepo.java
  41. 2 2
      src/main/java/com/izouma/dingdong/repo/rider/DeliveryFeeRepo.java
  42. 1 1
      src/main/java/com/izouma/dingdong/repo/rider/RiderRepo.java
  43. 8 0
      src/main/java/com/izouma/dingdong/repo/rider/RiderSignRepo.java
  44. 4 0
      src/main/java/com/izouma/dingdong/repo/user/AddressRepo.java
  45. 0 2
      src/main/java/com/izouma/dingdong/service/AppraisalService.java
  46. 0 1
      src/main/java/com/izouma/dingdong/service/BankCardService.java
  47. 0 1
      src/main/java/com/izouma/dingdong/service/MoneyRecordService.java
  48. 64 110
      src/main/java/com/izouma/dingdong/service/OrderInfoService.java
  49. 3 3
      src/main/java/com/izouma/dingdong/service/OrderRefundApplyService.java
  50. 17 30
      src/main/java/com/izouma/dingdong/service/UserService.java
  51. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/BannerService.java
  52. 2 4
      src/main/java/com/izouma/dingdong/service/backstage/BlackListService.java
  53. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/CategoryService.java
  54. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/ChatWordsService.java
  55. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/ComplaintService.java
  56. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/CooperateApplyService.java
  57. 0 62
      src/main/java/com/izouma/dingdong/service/backstage/DeliveryFeeService.java
  58. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/EmailService.java
  59. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/MerchantNatureService.java
  60. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/PriorityService.java
  61. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/PromoteService.java
  62. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/TagService.java
  63. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/TimeTagService.java
  64. 0 1
      src/main/java/com/izouma/dingdong/service/backstage/VoiceService.java
  65. 0 1
      src/main/java/com/izouma/dingdong/service/merchant/AutomaticResponseService.java
  66. 1 5
      src/main/java/com/izouma/dingdong/service/merchant/FullReductionService.java
  67. 13 5
      src/main/java/com/izouma/dingdong/service/merchant/GoodsService.java
  68. 0 1
      src/main/java/com/izouma/dingdong/service/merchant/GoodsSpecificationService.java
  69. 3 7
      src/main/java/com/izouma/dingdong/service/merchant/MerchantClassificationService.java
  70. 22 16
      src/main/java/com/izouma/dingdong/service/merchant/MerchantService.java
  71. 11 4
      src/main/java/com/izouma/dingdong/service/merchant/MerchantSettingsService.java
  72. 0 1
      src/main/java/com/izouma/dingdong/service/merchant/SalesService.java
  73. 128 0
      src/main/java/com/izouma/dingdong/service/rider/DeliveryFeeService.java
  74. 198 7
      src/main/java/com/izouma/dingdong/service/rider/RiderService.java
  75. 14 0
      src/main/java/com/izouma/dingdong/service/rider/RiderSignService.java
  76. 0 1
      src/main/java/com/izouma/dingdong/service/user/AddressService.java
  77. 0 1
      src/main/java/com/izouma/dingdong/service/user/FeedbackService.java
  78. 0 1
      src/main/java/com/izouma/dingdong/service/user/MyCollectionService.java
  79. 27 148
      src/main/java/com/izouma/dingdong/service/user/ShoppingCartService.java
  80. 4 4
      src/main/java/com/izouma/dingdong/web/AuthenticationController.java
  81. 32 6
      src/main/java/com/izouma/dingdong/web/OrderInfoController.java
  82. 7 5
      src/main/java/com/izouma/dingdong/web/OrderRefundApplyController.java
  83. 0 6
      src/main/java/com/izouma/dingdong/web/backstage/CategoryController.java
  84. 1 1
      src/main/java/com/izouma/dingdong/web/backstage/ComplaintController.java
  85. 1 0
      src/main/java/com/izouma/dingdong/web/merchant/GoodsController.java
  86. 0 1
      src/main/java/com/izouma/dingdong/web/merchant/MerchantSettingsController.java
  87. 4 4
      src/main/java/com/izouma/dingdong/web/rider/DeliveryFeeController.java
  88. 63 0
      src/main/java/com/izouma/dingdong/web/rider/RiderSignController.java
  89. 8 0
      src/main/java/com/izouma/dingdong/web/user/AddressController.java
  90. 10 8
      src/main/java/com/izouma/dingdong/web/user/ShoppingCartController.java
  91. 1 0
      src/main/resources/genjson/RiderSign.json
  92. 36 20
      src/main/vue/src/router.js
  93. 0 0
      src/main/vue/src/views/merchant/CategoryEdit.vue
  94. 0 0
      src/main/vue/src/views/merchant/CategoryList.vue
  95. 4 2
      src/main/vue/src/views/merchant/GoodsList.vue
  96. 2 2
      src/main/vue/src/views/merchant/MerchantList.vue
  97. 0 0
      src/main/vue/src/views/merchant/MerchantNatureEdit.vue
  98. 0 0
      src/main/vue/src/views/merchant/MerchantNatureList.vue
  99. 0 0
      src/main/vue/src/views/merchant/PriorityEdit.vue
  100. 0 0
      src/main/vue/src/views/merchant/PriorityList.vue

+ 0 - 13
pom.xml

@@ -265,18 +265,5 @@
             <version>1.0.1</version>
             <version>1.0.1</version>
         </dependency>
         </dependency>
 
 
-        <!-- 腾讯定位 -->
-        <dependency>
-            <groupId>com.tencent.map.geolocation</groupId>
-            <artifactId>TencentLocationSdk-openplatform</artifactId>
-            <version>7.1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>com.tencent.map.geolocation</groupId>
-            <artifactId>TencentLocationSdk-meituandispatch</artifactId>
-            <version>6.2.4</version>
-        </dependency>
-        <!-- 腾讯地图 -->
-
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 530 - 0
src/main/java/com/izouma/dingdong/config/ksher_pay_sdk.java

@@ -0,0 +1,530 @@
+package com.izouma.dingdong.config;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+
+import java.security.Signature;
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.*;
+
+/***
+ * ksher 生存的RSA私钥是pkcs1格式,即-----BEGIN RSA PRIVATE KEY----- 开头的。java需要pkcs8格式的,
+ * 是以-----BEGIN PRIVATE KEY-----开通的,以下命令可以装有openssl环境的linux机器上转化pcks1到pcks8格式。
+ * 需要pkcs8格式的可以调用命令行转换:
+ * openssl pkcs8 -topk8 -inform PEM -in private.key -outform pem -nocrypt -out pkcs8.pem
+ * 1、PKCS1私钥生成
+ * openssl genrsa -out private.pem 1024
+ * 2、PKCS1私钥转换为PKCS8(该格式一般Java调用)
+ * openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem
+ */
+public class ksher_pay_sdk {
+
+    private String appid;
+    private String privateKey;
+    private String PayDomain = "https://api.mch.ksher.net/KsherPay";
+    private String GateDomain = "https://gateway.ksher.com/api";
+    //定义加密方式
+    private final String KEY_RSA = "RSA";
+    //定义签名算法
+    private final String KEY_RSA_SIGNATURE = "MD5withRSA";
+    private final java.text.SimpleDateFormat timeStampFormat = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
+    private final String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL7955OCuN4I8eYNL/mixZWIXIgCvIVEivlxqdpiHPcOLdQ2RPSx/pORpsUu/E9wz0mYS2PY7hNc2mBgBOQT+wUCAwEAAQ==";
+
+    public ksher_pay_sdk(String appid, String privateKey) {
+        this.appid = appid;
+        this.privateKey = privateKey;
+    }
+
+    /**
+     * sign byte to hex
+     * @param bytes
+     * @return
+     */
+    public String bytesToHex(byte[] bytes) {
+        StringBuilder buf = new StringBuilder(bytes.length * 2);
+        for (byte b : bytes) { // 使用String的format方法进行转换
+            buf.append(String.format("%02x", new Integer(b & 0xff)));
+        }
+        return buf.toString();
+    }
+
+    /**
+     * hex string to byte
+     * @param sign
+     * @return
+     */
+    public byte[] unHexVerify(String sign) {
+        int length = sign.length();
+        byte[] result = new byte[length / 2];
+        for (int i = 0; i < length; i += 2)
+            result[i / 2] = (byte) ((Character.digit(sign.charAt(i), 16) << 4) + Character.digit(sign.charAt(i + 1), 16));
+        return result;
+    }
+
+    /**
+     * 请求参数排序
+     * @param params
+     * @return
+     */
+    public byte[] getParamsSort(Map params)
+    {
+        TreeMap<String, String> sortParas = new TreeMap<String, String>();
+        sortParas.putAll(params);
+        Iterator<String> it = sortParas.keySet().iterator();
+        StringBuilder encryptedStr = new StringBuilder();
+        while (it.hasNext()) {
+            String key = it.next();
+            encryptedStr.append(key).append("=").append(params.get(key));
+        }
+        return encryptedStr.toString().getBytes();
+    }
+
+    /**
+     * 签名
+     * @param params
+     * @return
+     */
+    public String KsherSign(Map params) throws Exception {
+        //将私钥加密数据字符串转换为字节数组
+        byte[] data = getParamsSort(params);
+        // 解密由base64编码的私钥
+        byte[] privateKeyBytes = Base64.decodeBase64(this.privateKey.getBytes());
+        // 构造PKCS8EncodedKeySpec对象
+        PKCS8EncodedKeySpec pkcs = new PKCS8EncodedKeySpec(privateKeyBytes);
+        // 指定的加密算法
+        KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+        // 取私钥对象
+        PrivateKey key = factory.generatePrivate(pkcs);
+        // 用私钥对信息生成数字签名
+        Signature signature = Signature.getInstance(KEY_RSA_SIGNATURE);
+        signature.initSign(key);
+        signature.update(data);
+        byte[] sign_byte = signature.sign();
+        //String sing_str = new String(Base64.encodeBase64(signature.sign()));
+        return bytesToHex(sign_byte);
+    }
+    /**
+     * 校验数字签名
+     * @param data
+     * @param sign
+     * @return 校验成功返回true,失败返回false
+     */
+    public boolean KsherVerify(Map data, String sign) throws Exception {
+        boolean flag = false;
+        //将私钥加密数据字符串转换为字节数组
+        byte[] dataByte = getParamsSort(data);
+        // 解密由base64编码的公钥
+        byte[] publicKeyBytes = Base64.decodeBase64(publicKey.getBytes());
+        // 构造X509EncodedKeySpec对象
+        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
+        // 指定的加密算法
+        KeyFactory factory = KeyFactory.getInstance(KEY_RSA);
+        // 取公钥对象
+        PublicKey key = factory.generatePublic(keySpec);
+        // 用公钥验证数字签名
+        Signature signature = Signature.getInstance(KEY_RSA_SIGNATURE);
+        signature.initVerify(key);
+        signature.update(dataByte);
+        return signature.verify(unHexVerify(sign));
+    }
+
+    /**
+     * post请求(用于key-value格式的参数)
+     *
+     * @param url
+     * @param params
+     * @return
+     */
+    public String KsherPost(String url, Map params) throws Exception {
+        HttpClient client = new DefaultHttpClient();
+        HttpPost post = new HttpPost(PayDomain + url);
+        //设置公共参数
+        params.put("appid", this.appid);
+        params.put("nonce_str", RandomStringUtils.randomAlphanumeric(4));
+        params.put("time_stamp", timeStampFormat.format(new Date()));
+
+        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));
+        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());
+
+        JSONObject json = JSONObject.parseObject(result.toString());
+        boolean isVerify = KsherVerify(json.getJSONObject("data"), json.getString("sign"));
+        if(isVerify){
+            return result.toString();
+        }else{
+            throw new Exception("verify signature failed");
+        }
+    }
+
+    /**
+     * 商户扫用户(B扫C)
+     * @param mchOrderNo 商户订单号
+     * @param feeType 支付币种 'THB'泰铢 'CNY'人民币
+     * @param authCode 支付条码
+     * @param channel 支付通道 wechat aplipay
+     * @param operatorId 操作员编号 可选
+     * @param totalFee 支付金额
+     * @return
+     */
+    public String QuickPay(String mchOrderNo, String feeType, String authCode, String channel, String operatorId, Integer totalFee) {
+        try {
+            Map<String, String> paras = new HashMap<String, String>();
+            paras.put("mch_order_no", mchOrderNo);
+            paras.put("total_fee", totalFee.toString());
+            paras.put("fee_type", feeType);
+            paras.put("auth_code", authCode);
+            paras.put("channel", channel);
+            paras.put("operator_id", operatorId);
+            return KsherPost(PayDomain + "/quick_pay", paras);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return ex.getMessage();
+        }
+    }
+
+    /**
+     * C扫B支付
+     * 必传参数
+     * 	mch_order_no
+     * 	total_fee
+     * 	fee_type
+     * 	channel
+     * 选传参数
+     * 	redirect_url
+     * 	notify_url
+     * 	paypage_title
+     * 	operator_id
+     * @return
+     */
+    public String JsApiPay(String mchOrderNo,String feeType,String channel,Integer totalFee){
+        try {
+            Map<String, String> paras = new HashMap<String, String>();
+            paras.put("mch_order_no", mchOrderNo);
+            paras.put("total_fee", totalFee.toString());
+            paras.put("fee_type", feeType);
+            paras.put("channel", channel);
+            return KsherPost(PayDomain + "/jsapi_pay", paras);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return ex.getMessage();
+        }
+    }
+    /**
+    动态码支付
+    :param kwargs:
+    必传参数
+        mch_order_no
+        total_fee
+        fee_type
+        channel
+    选传参数
+        redirect_url
+        notify_url
+        paypage_title
+        product
+        attach
+        operator_id
+        device_id
+        img_type
+    :return:
+    **/
+    public String NativePay(String mchOrderNo, String feeType, String channel,Integer totalFee) throws Exception {
+        Map<String, String> paras = new HashMap<>();
+        paras.put("mch_order_no", mchOrderNo);
+        paras.put("total_fee", totalFee.toString());
+        paras.put("fee_type", feeType);
+        paras.put("channel", channel);
+        return KsherPost(PayDomain + "/native_pay", paras);
+    }
+    /**
+    小程序支付
+    :param kwargs:
+    必传参数
+        mch_order_no
+        total_fee
+        fee_type
+        channel
+        sub_openid
+        channel_sub_appid
+    选传参数
+        redirect_url
+        notify_url
+        paypage_title
+        product
+        operator_id
+    :return:
+    **/
+    public String MiniproPay(String mchOrderNo, String feeType, String channel, String subOpenid, String channelSubAppId, Integer totalFee) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        paras.put("total_fee", totalFee.toString());
+        paras.put("fee_type", feeType);
+        paras.put("channel", channel);
+        paras.put("sub_openid", subOpenid);
+        paras.put("channel_sub_appid", channelSubAppId);
+        return KsherPost(PayDomain + "/mini_program_pay", paras);
+    }
+    /**
+    app支付
+    :param kwargs:
+    必传参数
+        mch_order_no
+        total_fee
+        fee_type
+        channel
+        sub_openid
+        channel_sub_appid
+    选传参数
+        redirect_url
+        notify_url
+        paypage_title
+        product
+        attach
+        operator_id
+        refer_url 仅当channel为alipay时需要
+    :return:
+    **/
+    public String AppPay(String mchOrderNo,String feeType,String channel,String subOpenid,String channelSubAppId, Integer totalFee) throws Exception {
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        paras.put("total_fee", totalFee.toString());
+        paras.put("fee_type", feeType);
+        paras.put("channel", channel);
+        paras.put("sub_openid", subOpenid);
+        paras.put("channel_sub_appid", channelSubAppId);
+        return KsherPost(PayDomain + "/app_pay", paras);
+    }
+    /**
+    H5支付,仅支持channel=alipay
+    :param kwargs:
+    必传参数
+        mch_order_no
+        total_fee
+        fee_type
+        channel
+    选传参数
+        redirect_url
+        notify_url
+        paypage_title
+        product
+        attach
+        operator_id
+        device_id
+        refer_url
+    :return:
+    **/
+    public String WapPay(String mchOrderNo,String feeType,String channel, Integer totalFee) throws Exception {
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        paras.put("total_fee", totalFee.toString());
+        paras.put("fee_type", feeType);
+        paras.put("channel", channel);
+        return KsherPost(PayDomain + "/wap_pay", paras);
+    }
+    /**
+    PC网站支付,仅支持channel=alipay
+    :param kwargs:
+    必传参数
+        mch_order_no
+        total_fee
+        fee_type
+        channel
+    选传参数
+        redirect_url
+        notify_url
+        paypage_title
+        product
+        attach
+        operator_id
+        device_id
+        refer_url
+    :return:
+    **/
+    public String WepPay(String mchOrderNo,String feeType,String channel,Integer totalFee)throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        paras.put("total_fee", totalFee.toString());
+        paras.put("fee_type", feeType);
+        paras.put("channel", channel);
+        return KsherPost(PayDomain + "/wap_pay", paras);
+    }
+    /**
+    订单查询
+    :param kwargs:
+    必传参数
+        mch_order_no、ksher_order_no、channel_order_no三选一
+    :return:
+    **/
+    public String OrderQuery(String mchOrderNo) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        return KsherPost(PayDomain + "/order_query", paras);
+    }
+    /**
+    订单关闭
+    :param kwargs:
+    必传参数
+        mch_order_no、ksher_order_no、channel_order_no三选一
+    选传参数
+        operator_id
+    :return:
+    **/
+    public String OrderClose(String mchOrderNo) throws Exception {
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        return KsherPost(PayDomain + "/order_close", paras);
+    }
+    /**
+    订单撤销
+    :param kwargs:
+    必传参数
+        mch_order_no、ksher_order_no、channel_order_no三选一
+    选传参数
+        operator_id
+    :return:
+    **/
+    public String OrderReverse(String mchOrderNo) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mchOrderNo);
+        return KsherPost(PayDomain + "/order_reverse", paras);
+    }
+    /**
+    订单退款
+    :param kwargs:
+    必传参数
+        total_fee
+        fee_type
+        refund_fee
+        mch_refund_no
+        mch_order_no、ksher_order_no、channel_order_no三选一
+    选传参数
+        operator_id
+    :return:
+    **/
+    public String OrderRefund(String mchRefundNo,String feeType,String mchOrderNo,Integer refundFee,Integer totalFee) throws Exception {
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_refund_no", mchRefundNo);
+        paras.put("fee_type", feeType);
+        paras.put("mchOrderNo", mchOrderNo);
+        paras.put("refund_fee", refundFee.toString());
+        paras.put("total_fee", totalFee.toString());
+        return KsherPost(PayDomain + "/order_refund", paras);
+    }
+    /**
+    退款查询
+    :param kwargs:
+        必传参数
+            mch_refund_no、ksher_refund_no、channel_refund_no三选一
+            mch_order_no、ksher_order_no、channel_order_no三选一
+    **/
+    public String RefundQuery(String mchRefundNo, String mchOrderNo) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_refund_no", mchRefundNo);
+        paras.put("mchOrderNo", mchOrderNo);
+        return KsherPost(PayDomain + "/refund_query", paras);
+    }
+    /**
+    汇率查询
+    :param kwargs:
+        必传参数
+        channel
+        fee_type
+        date
+    :return:
+    **/
+    public String RateQuery(String channel, String feeType,String  date) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("channel", channel);
+        paras.put("fee_type", feeType);
+        paras.put("date", date);
+        return KsherPost(PayDomain + "/rate_query", paras);
+    }
+
+    /**
+    聚合支付商户查询订单支付状态
+    :param kwargs:
+	    必传参数
+		mch_order_no
+    :return:
+    **/
+    public String GatewayOrderQuery(String mch_order_no) throws Exception{
+        Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mch_order_no);
+        return KsherPost(GateDomain + "gateway_order_query", paras);
+    }
+
+    /**
+    聚合支付商户通过API提交数据
+    :param kwargs:
+	    必传参数
+		mch_order_no: 商户订单号 str
+		total_fee: 金额(分) int
+		fee_type: 货币种类 str
+		channel_list: 支付通道 str
+		mch_code: 商户订单code str
+		mch_redirect_url: 商户通知url str
+		mch_redirect_url_fail: 失败回调网址 str
+		product_name: 商品描述 str
+		refer_url: 商家refer str
+		device: 设备名称(PC or H5) str
+	    选传参数
+		color: 横幅颜色 str
+		background: 横幅背景图片 str
+		payment_color: 支付按钮颜色 str
+		ksher_explain: 最下方文案 str
+		hide_explain: 是否显示最下方文案(1显示 0不显示) int
+		expire_time: 订单过期时间(min) int
+		hide_exp_time: 是否显示过期时间(1显示 0不显示) int
+		logo: 横幅logo str
+		lang: 语言(en,cn,th) str
+		shop_name: logo旁文案 str
+		attach: 商户附加信息 str
+    :return:
+	{'pay_content': 'https://gateway.ksher.com/mindex?order_uuid=订单uuid'}
+	**/
+	public String GatewayPay(String mch_order_no, String fee_type, String channel_list, String mch_code, String mch_redirect_url,
+	String mch_redirect_url_fail, String product_name, String refer_url, String device, Integer total_fee) throws Exception{
+	    Map<String, String> paras = new HashMap<String, String>();
+        paras.put("mch_order_no", mch_order_no);
+        paras.put("fee_type", fee_type);
+        paras.put("channel_list", channel_list);
+        paras.put("mch_code", mch_code);
+        paras.put("mch_redirect_url", mch_redirect_url);
+        paras.put("mch_redirect_url_fail", mch_redirect_url_fail);
+        paras.put("product_name", product_name);
+        paras.put("refer_url", refer_url);
+        paras.put("device", device);
+        paras.put("total_fee", total_fee.toString());
+        return KsherPost(GateDomain + "gateway_pay", paras);
+	}
+}

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

@@ -3,7 +3,6 @@ package com.izouma.dingdong.domain;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 import lombok.*;
-import org.hibernate.annotations.Where;
 
 
 import javax.persistence.Column;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Entity;

+ 0 - 8
src/main/java/com/izouma/dingdong/domain/Coupon.java

@@ -1,10 +1,5 @@
 package com.izouma.dingdong.domain;
 package com.izouma.dingdong.domain;
 
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.izouma.dingdong.converter.LongArrayConverter;
-import com.izouma.dingdong.domain.BaseEntity;
-import com.izouma.dingdong.domain.User;
-import com.izouma.dingdong.domain.backstage.Category;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 import lombok.*;
@@ -13,9 +8,6 @@ import javax.persistence.*;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.HashSet;
-import java.util.Set;
 
 
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Data

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

@@ -24,6 +24,13 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "用户ID", name = "userId")
     @ApiModelProperty(value = "用户ID", name = "userId")
     private Long userId;
     private Long userId;
 
 
+    @ApiModelProperty(value = "用户昵称")
+    private String nickname;
+
+    //经度在前 纬度在后
+    @ApiModelProperty(value = "用户地址经纬度",name = "location")
+    private String location;
+
     @Enumerated(EnumType.STRING)
     @Enumerated(EnumType.STRING)
     @ApiModelProperty(value = "订单状态", name = "orderStatus")
     @ApiModelProperty(value = "订单状态", name = "orderStatus")
     private OrderStatus status;
     private OrderStatus status;
@@ -40,9 +47,6 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "商家状态", name = "merchantStatus")
     @ApiModelProperty(value = "商家状态", name = "merchantStatus")
     private MerchantStatus merchantStatus;
     private MerchantStatus merchantStatus;
 
 
-//    @ApiModelProperty(value = "商家地址", name = "merchantAddress")
-//    private String merchantAddress;
-
     @ApiModelProperty(value = "备注", name = "remark")
     @ApiModelProperty(value = "备注", name = "remark")
     private String remark;
     private String remark;
 
 
@@ -86,6 +90,7 @@ public class OrderInfo extends BaseEntity {
 /*    @ApiModelProperty(value = "骑手工号", name = "jobNumber")
 /*    @ApiModelProperty(value = "骑手工号", name = "jobNumber")
     private String jobNumber;*/
     private String jobNumber;*/
 
 
+    @ApiModelProperty(value = "骑手id", name = "riderId")
     private Long riderId;
     private Long riderId;
 
 
     @Enumerated(EnumType.STRING)
     @Enumerated(EnumType.STRING)
@@ -99,6 +104,9 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "下单时间", name = "orderTime")
     @ApiModelProperty(value = "下单时间", name = "orderTime")
     private LocalDateTime orderTime;
     private LocalDateTime orderTime;
 
 
+    @ApiModelProperty(value = "用户地址Id",name = "addressId")
+    private Long addressId;
+
     @ApiModelProperty(value = "配送地址", name = "userAddress")
     @ApiModelProperty(value = "配送地址", name = "userAddress")
     private String userAddress;
     private String userAddress;
 
 
@@ -106,7 +114,6 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "支付方式", name = "payMethod")
     @ApiModelProperty(value = "支付方式", name = "payMethod")
     private PayMethod payMethod;
     private PayMethod payMethod;
 
 
-
     @Column(nullable = false)
     @Column(nullable = false)
     @ApiModelProperty(value = "取消订单", name = "cancel")
     @ApiModelProperty(value = "取消订单", name = "cancel")
     private Boolean cancel = false;
     private Boolean cancel = false;
@@ -150,4 +157,9 @@ public class OrderInfo extends BaseEntity {
     @ApiModelProperty(value = "预计到达时间")
     @ApiModelProperty(value = "预计到达时间")
     private LocalDateTime timeOfArrival;
     private LocalDateTime timeOfArrival;
 
 
+    //不显示的骑手列表
+//    private String NotDisplayRiderIds;
+    @ApiModelProperty(value = "期望送达时间段")
+    private String expectDeliveryTime;
+
 }
 }

+ 3 - 2
src/main/java/com/izouma/dingdong/domain/OrderRefundApply.java

@@ -26,6 +26,7 @@ import java.time.LocalDateTime;
 @Where(clause = "enabled = 1")
 @Where(clause = "enabled = 1")
 @ApiModel(value = "退款申请", description = "退款申请")
 @ApiModel(value = "退款申请", description = "退款申请")
 public class OrderRefundApply extends BaseEntity {
 public class OrderRefundApply extends BaseEntity {
+
     @ApiModelProperty(value = "订单ID", name = "orderId")
     @ApiModelProperty(value = "订单ID", name = "orderId")
     private Long orderId;
     private Long orderId;
 
 
@@ -35,8 +36,8 @@ public class OrderRefundApply extends BaseEntity {
     @ApiModelProperty(value = "商户ID", name = "merchantId")
     @ApiModelProperty(value = "商户ID", name = "merchantId")
     private Long merchantId;
     private Long merchantId;
 
 
-//    @ApiModelProperty(value = "图片")
-//    private String img;
+    @ApiModelProperty(value = "图片")
+    private String img;
 
 
     @Enumerated(EnumType.STRING)
     @Enumerated(EnumType.STRING)
     @ApiModelProperty(value = "理由", name = "reason")
     @ApiModelProperty(value = "理由", name = "reason")

+ 0 - 2
src/main/java/com/izouma/dingdong/domain/WithdrawApply.java

@@ -1,8 +1,6 @@
 package com.izouma.dingdong.domain;
 package com.izouma.dingdong.domain;
 
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelIgnore;
-import com.izouma.dingdong.annotations.Searchable;
-import com.izouma.dingdong.enums.PayMethod;
 import com.izouma.dingdong.enums.WithdrawStatus;
 import com.izouma.dingdong.enums.WithdrawStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/backstage/Banner.java

@@ -13,7 +13,6 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.Enumerated;
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 
 
 @Data
 @Data

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/backstage/ChatWords.java

@@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
 import javax.persistence.Column;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Entity;
 import javax.validation.constraints.Size;
 import javax.validation.constraints.Size;
-import java.io.Serializable;
 
 
 @Builder
 @Builder
 @Data
 @Data

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

@@ -5,14 +5,11 @@ import com.izouma.dingdong.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 import lombok.*;
-import org.hibernate.annotations.NotFound;
-import org.hibernate.annotations.NotFoundAction;
 import org.hibernate.annotations.Where;
 import org.hibernate.annotations.Where;
 
 
 import javax.persistence.*;
 import javax.persistence.*;
 import javax.validation.constraints.Size;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
 import java.io.Serializable;
-import java.util.List;
 
 
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Data

+ 2 - 0
src/main/java/com/izouma/dingdong/domain/backstage/Priority.java

@@ -2,6 +2,7 @@ package com.izouma.dingdong.domain.backstage;
 
 
 
 
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Builder;
@@ -16,6 +17,7 @@ import javax.persistence.Entity;
 @AllArgsConstructor
 @AllArgsConstructor
 @NoArgsConstructor
 @NoArgsConstructor
 @Builder
 @Builder
+@ApiModel(value = "优先级的配置")
 public class Priority extends BaseEntity {
 public class Priority extends BaseEntity {
 
 
     //0-商户 1-商品
     //0-商户 1-商品

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/backstage/Promote.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.domain.backstage;
 package com.izouma.dingdong.domain.backstage;
 
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/backstage/Tag.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.domain.backstage;
 package com.izouma.dingdong.domain.backstage;
 
 
-import com.izouma.dingdong.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/merchant/Goods.java

@@ -1,7 +1,6 @@
 package com.izouma.dingdong.domain.merchant;
 package com.izouma.dingdong.domain.merchant;
 
 
 import com.izouma.dingdong.annotations.Searchable;
 import com.izouma.dingdong.annotations.Searchable;
-import com.izouma.dingdong.converter.StringArrayConverter;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.enums.ApplyStatus;
 import com.izouma.dingdong.enums.ApplyStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/merchant/MerchantSettings.java

@@ -5,7 +5,6 @@ import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.domain.backstage.MerchantNature;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Data;

+ 1 - 1
src/main/java/com/izouma/dingdong/domain/backstage/DeliveryFee.java → src/main/java/com/izouma/dingdong/domain/rider/DeliveryFee.java

@@ -1,4 +1,4 @@
-package com.izouma.dingdong.domain.backstage;
+package com.izouma.dingdong.domain.rider;
 
 
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.enums.DeliveryType;
 import com.izouma.dingdong.enums.DeliveryType;

+ 48 - 26
src/main/java/com/izouma/dingdong/domain/rider/Rider.java

@@ -1,6 +1,8 @@
 package com.izouma.dingdong.domain.rider;
 package com.izouma.dingdong.domain.rider;
 
 
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
+import com.izouma.dingdong.domain.User;
+import com.izouma.dingdong.enums.ApplyStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
@@ -9,9 +11,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 import org.hibernate.annotations.Where;
 import org.hibernate.annotations.Where;
 
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import java.math.BigDecimal;
+import javax.persistence.*;
 
 
 @Data
 @Data
 @Entity
 @Entity
@@ -25,37 +25,28 @@ public class Rider extends BaseEntity {
     private Long userId;
     private Long userId;
 
 
     @ApiModelProperty(value = "工号", name = "jobNumber")
     @ApiModelProperty(value = "工号", name = "jobNumber")
-    private Long jobNumber;
+    private String jobNumber;
 
 
-    @ApiModelProperty(value = "区域",name = "area")
+    @ApiModelProperty(value = "工作地点", name = "area")
     private String area;
     private String area;
 
 
-    @ApiModelProperty(value = "签到", name = "signIn")
-    private Boolean signIn;
+    @ApiModelProperty(value = "经度", name = "longitude")
+    private Double longitude;
 
 
-    @ApiModelProperty(value = "经验值", name = "experience")
-    private String experience;
+    @ApiModelProperty(value = "纬度", name = "latitude")
+    private Double latitude;
 
 
-    @ApiModelProperty(value = "等级", name = "level")
-    private int level;
+//    @ApiModelProperty(value = "签到", name = "signIn")
+//    private Boolean signIn;
 
 
-    @ApiModelProperty(value = "货币", name = "monetary")
-    private BigDecimal monetary;
+    @ApiModelProperty(value = "摩托车图片", name = "motorcycle")
+    private String motorcycleImg;
 
 
-    @ApiModelProperty(value = "成单数", name = "singular")
-    private int singular;
+    @ApiModelProperty(value = "车牌照片", name = "licensePlateImg")
+    private String licensePlateImg;
 
 
-    @ApiModelProperty(value = "距离", name = "distance")
-    private double distance;
-
-    @ApiModelProperty(value = "好评数", name = "goodReview")
-    private int goodReview;
-
-    @ApiModelProperty(value = "差评数", name = "badReview")
-    private int badReview;
-
-    @ApiModelProperty(value = "操作",name = "operate")
-    private String operate;
+    @ApiModelProperty(value = "驾照照片",name = "driverLicenseImg")
+    private String driverLicenseImg;
 
 
     @Column(nullable = false)
     @Column(nullable = false)
     @ApiModelProperty(value = "黑名单", name = "blacklist")
     @ApiModelProperty(value = "黑名单", name = "blacklist")
@@ -64,4 +55,35 @@ public class Rider extends BaseEntity {
     @Column(nullable = false)
     @Column(nullable = false)
     private Boolean enabled = true;
     private Boolean enabled = true;
 
 
+    @Enumerated(EnumType.STRING)
+    @ApiModelProperty(value = "状态", name = "status")
+    private ApplyStatus status;
+
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
+    @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private User user;
+
+//    @ApiModelProperty(value = "准点率", name = "punctualityRate")
+//    private Double punctualityRate;
+
+//    @ApiModelProperty(value = "经验值", name = "experience")
+//    private String experience;
+
+//    @ApiModelProperty(value = "等级", name = "level")
+//    private int level;
+
+//    @ApiModelProperty(value = "成单数", name = "singular")
+//    private int singular;
+
+//    @ApiModelProperty(value = "累计距离", name = "distance")
+//    private double distance;
+
+//    @ApiModelProperty(value = "好评数", name = "goodReview")
+//    private int goodReview;
+
+//    @ApiModelProperty(value = "差评数", name = "badReview")
+//    private int badReview;
+
+//    @ApiModelProperty(value = "操作",name = "operate")
+//    private String operate;
 }
 }

+ 39 - 0
src/main/java/com/izouma/dingdong/domain/rider/RiderSign.java

@@ -0,0 +1,39 @@
+package com.izouma.dingdong.domain.rider;
+
+import com.izouma.dingdong.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Entity;
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Entity
+@ApiModel(value = "RiderSign", description = "骑手签到表")
+public class RiderSign extends BaseEntity {
+
+    @ApiModelProperty(value = "骑手Id", name = "riderId")
+    private Long riderId;
+
+//    @ApiModelProperty(value = "签到", name = "signIn")
+//    private Boolean signIn;
+
+    @ApiModelProperty(value = "签到时间", name = "signTime")
+    private LocalDateTime signTime;
+
+//    @ApiModelProperty(value = "位置")
+//    private String location;
+
+    @ApiModelProperty(value = "经度", name = "longitude")
+    private Double longitude;
+
+    @ApiModelProperty(value = "纬度", name = "latitude")
+    private Double latitude;
+}

+ 0 - 1
src/main/java/com/izouma/dingdong/domain/user/Address.java

@@ -9,7 +9,6 @@ import lombok.*;
 import javax.persistence.Column;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Entity;
 import java.io.Serializable;
 import java.io.Serializable;
-import java.math.BigDecimal;
 
 
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Data

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

@@ -1,10 +1,7 @@
 package com.izouma.dingdong.domain.user;
 package com.izouma.dingdong.domain.user;
 
 
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.OrderGoodsSpec;
 import com.izouma.dingdong.domain.OrderGoodsSpec;
-import com.izouma.dingdong.domain.User;
-import com.izouma.dingdong.domain.merchant.Merchant;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;

+ 0 - 35
src/main/java/com/izouma/dingdong/dto/CategoryDTO.java

@@ -1,35 +0,0 @@
-package com.izouma.dingdong.dto;
-
-import com.izouma.dingdong.domain.merchant.Merchant;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel(value = "分类信息")
-public class CategoryDTO {
-
-    @ApiModelProperty(value = "分类ID")
-    private Long id;
-
-    @ApiModelProperty(value = "分类名称")
-    private String name;
-
-    @ApiModelProperty(value = "父级ID")
-    private Long parentId;
-
-    @ApiModelProperty(value = "下级")
-    private List<CategoryDTO> children;
-
-    @ApiModelProperty(value = "用户")
-    private List<Merchant> merchants;
-
-}

+ 0 - 37
src/main/java/com/izouma/dingdong/dto/GoodsSpecDTO.java

@@ -1,37 +0,0 @@
-package com.izouma.dingdong.dto;
-
-import com.izouma.dingdong.domain.merchant.GoodsSpecification;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel(value = "订单商品及规格", description = "订单商品及规格")
-public class GoodsSpecDTO {
-/*    @ApiModelProperty(value = "订单ID", name = "orderId")
-    private Long orderId;*/
-
-    @ApiModelProperty(value = "商品ID", name = "goodsId")
-    private Long goodsId;
-
-//    private String goodsName;
-
-    @ApiModelProperty(value = "规格", name = "specification")
-    private List<GoodsSpecification> specification;
-
-    @ApiModelProperty(value = "数量", name = "num")
-    private Integer num;
-
-    @ApiModelProperty(value = "商品价格", name = "goodsPrice")
-    private BigDecimal goodsPrice;
-
-}

+ 0 - 46
src/main/java/com/izouma/dingdong/dto/MerchantClassificationDTO.java

@@ -1,46 +0,0 @@
-package com.izouma.dingdong.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Column;
-import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.Set;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel(value = "商家自定义分类")
-public class MerchantClassificationDTO implements Serializable {
-
-    private Long id;
-
-    @ApiModelProperty(value = "名称", name = "name")
-    @Column(length = 50)
-    @Size(max = 50)
-    private String name;
-
-    @ApiModelProperty(value = "排序", name = "sort")
-    private Integer sort;
-
-    @ApiModelProperty(value = "商户ID", name = "merchantId")
-    private Long merchantId;
-
-
-    @ApiModelProperty(value = "商品列表", name = "goodsList")
-    private String goodsIds;
-
-
-    @ApiModelProperty(value = "是否开启", name = "isOpen")
-    private Boolean isOpen;
-
-    @ApiModelProperty(value = "是否显示", name = "isShow")
-    private Boolean isShow;
-
-}

+ 0 - 1
src/main/java/com/izouma/dingdong/dto/MerchantDTO.java

@@ -1,7 +1,6 @@
 package com.izouma.dingdong.dto;
 package com.izouma.dingdong.dto;
 
 
 import com.izouma.dingdong.annotations.Searchable;
 import com.izouma.dingdong.annotations.Searchable;
-import com.izouma.dingdong.domain.Verified;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.domain.merchant.FullReduction;
 import com.izouma.dingdong.domain.merchant.FullReduction;

+ 0 - 87
src/main/java/com/izouma/dingdong/dto/OrderDTO.java

@@ -1,87 +0,0 @@
-package com.izouma.dingdong.dto;
-
-import com.izouma.dingdong.domain.OrderGoodsSpec;
-import com.izouma.dingdong.domain.User;
-import com.izouma.dingdong.enums.MerchantStatus;
-import com.izouma.dingdong.enums.OrderStatus;
-import com.izouma.dingdong.enums.PayMethod;
-import com.izouma.dingdong.enums.RiderStatus;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Column;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel(value = "")
-public class OrderDTO {
-
-    private String avatar;
-
-    private String nickname;
-
-    @ApiModelProperty(value = "用户地址", name = "address")
-    private String address;
-
-    private String merchantName;
-
-    private String logo;
-
-    private MerchantStatus merchantStatus;
-
-    private String riderName;
-
-    private RiderStatus riderStatus;
-
-    @ApiModelProperty(value = "配送费", name = "deliveryAmount")
-    private BigDecimal deliveryAmount;
-
-    @ApiModelProperty(value = "实付金额", name = "realAmount")
-    private BigDecimal realAmount;
-
-    @ApiModelProperty(value = "支付方式", name = "payMethod")
-    private PayMethod payMethod;
-
-    @Column(nullable = false)
-    @ApiModelProperty(value = "取消订单", name = "cancel")
-    private Boolean cancel = false;
-
-    @ApiModelProperty(value = "下单时间", name = "orderTime")
-    private LocalDateTime orderTime;
-
-    @Column(nullable = false)
-    @ApiModelProperty(value = "已评价", name = "rated")
-    private Boolean rated = false;
-
-    @ApiModelProperty(value = "订单状态", name = "orderStatus")
-    private OrderStatus status;
-
-    @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 = "商品及规格")
-    private List<OrderGoodsSpec> orderGoodsSpecs;
-
-
-    private User user;
-
-
-}

+ 0 - 21
src/main/java/com/izouma/dingdong/dto/OrderGoodsSpecDTO.java

@@ -1,21 +0,0 @@
-package com.izouma.dingdong.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class OrderGoodsSpecDTO {
-    //新增到购物车时可为空
-    private Long id;
-
-    private Long goodsId;
-
-    private String goodsSpecificationIds;
-
-    private Integer num;
-}

+ 35 - 0
src/main/java/com/izouma/dingdong/dto/RiderDTO.java

@@ -0,0 +1,35 @@
+package com.izouma.dingdong.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class RiderDTO {
+
+    @ApiModelProperty(value = "用户ID", name = "userId")
+    private Long userId;
+
+    @ApiModelProperty(value = "摩托车图片", name = "motorcycle")
+    private String motorcycleImg;
+
+    @ApiModelProperty(value = "车牌照片", name = "licensePlateImg")
+    private String licensePlateImg;
+
+    @ApiModelProperty(value = "驾照照片",name = "driverLicenseImg")
+    private String driverLicenseImg;
+
+    @ApiModelProperty(value = "工作地点", name = "area")
+    private String area;
+
+    @ApiModelProperty(value = "经度", name = "longitude")
+    private Double longitude;
+
+    @ApiModelProperty(value = "纬度", name = "latitude")
+    private Double latitude;
+}

+ 27 - 0
src/main/java/com/izouma/dingdong/dto/RiderDistanceDTO.java

@@ -0,0 +1,27 @@
+package com.izouma.dingdong.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel(value = "订单商品及规格", description = "订单商品及规格")
+public class RiderDistanceDTO {
+
+    @ApiModelProperty(value = "骑手ID", name = "riderId")
+    private Long riderId;
+
+    @ApiModelProperty(value = "经度", name = "longitude")
+    private Double longitude;
+
+    @ApiModelProperty(value = "纬度", name = "latitude")
+    private Double latitude;
+
+}

+ 1 - 0
src/main/java/com/izouma/dingdong/dto/UserOrderDTO.java

@@ -33,6 +33,7 @@ public class UserOrderDTO {
     private String remark;
     private String remark;
 
 
 
 
+
 //    @ApiModelProperty(value = "商户ID", name = "merchantId")
 //    @ApiModelProperty(value = "商户ID", name = "merchantId")
 //    private Long merchantId;
 //    private Long merchantId;
 
 

+ 0 - 19
src/main/java/com/izouma/dingdong/enums/MerchantSort.java

@@ -1,19 +0,0 @@
-package com.izouma.dingdong.enums;
-
-public enum MerchantSort {
-    //好评优先
-
-    //起送费最低
-
-    //配送最快
-
-    //配送费最低
-
-    //人均最低
-
-    //人均最高
-
-    //距离
-
-    //销量
-}

+ 6 - 1
src/main/java/com/izouma/dingdong/enums/MerchantStatus.java

@@ -14,7 +14,12 @@ public enum MerchantStatus {
     /*
     /*
     已拒单
     已拒单
      */
      */
-    REJECTED("已拒单");
+    REJECTED("已拒单"),
+
+    /*
+    已完成
+     */
+    CARRY_OUT("已完成");
 
 
     private final String description;
     private final String description;
 
 

+ 3 - 1
src/main/java/com/izouma/dingdong/enums/RefundReason.java

@@ -4,6 +4,8 @@ public enum RefundReason {
     PAYMENT_TIMEOUT("用户支付超时"),
     PAYMENT_TIMEOUT("用户支付超时"),
     ORDER_TIMEOUT("商家接单超时"),
     ORDER_TIMEOUT("商家接单超时"),
     MERCHANT_REJECTION("商家拒单"),
     MERCHANT_REJECTION("商家拒单"),
+    USER_COMPLAINTS("用户投诉"),
+    UNABLE_TO_DELIVER("当前订单无法配送"),
     DELIVERY_TIME_IS_TOO_LONG("配送时间太长"),
     DELIVERY_TIME_IS_TOO_LONG("配送时间太长"),
     ADDRESS_IS_INCORRECT("地址填写错误"),
     ADDRESS_IS_INCORRECT("地址填写错误"),
     MERCHANT_CANNOT_DELIVER("商家无法送达,联系我取消"),
     MERCHANT_CANNOT_DELIVER("商家无法送达,联系我取消"),
@@ -13,7 +15,7 @@ public enum RefundReason {
     RIDER_CONTACT_ME_TO_CANCEL("骑手联系我取消"),
     RIDER_CONTACT_ME_TO_CANCEL("骑手联系我取消"),
     MORE_POINTS("点多了/点错了/漏点了"),
     MORE_POINTS("点多了/点错了/漏点了"),
     DO_NOT_WANT_SOMETHING_TEMPORARILY("临时有事不想要了"),
     DO_NOT_WANT_SOMETHING_TEMPORARILY("临时有事不想要了"),
-    USER_COMPLAINTS("用户投诉"),
+    RIDER_CANNOT_REACH_USER("骑手联系不上用户"),
     OTHER("其他原因");
     OTHER("其他原因");
     private final String description;
     private final String description;
 
 

+ 10 - 5
src/main/java/com/izouma/dingdong/enums/RiderStatus.java

@@ -2,23 +2,28 @@ package com.izouma.dingdong.enums;
 
 
 public enum RiderStatus {
 public enum RiderStatus {
     /*
     /*
-    未接单
+    未接单 待接单
      */
      */
     NOT_RECEIVED,
     NOT_RECEIVED,
     /*
     /*
-    接单
+    接单 待取餐
      */
      */
     RECEIVED,
     RECEIVED,
     /*
     /*
-    取餐
+    到达 待取餐
+     */
+    ARRIVE,
+    /*
+    取餐 待送达
      */
      */
     TAKE_MEAL,
     TAKE_MEAL,
     /*
     /*
     送餐
     送餐
      */
      */
-    MEAL_DELIVERY,
+   // MEAL_DELIVERY,
     /*
     /*
     送达
     送达
      */
      */
-    CARRY_OUT
+    CARRY_OUT,
+
 }
 }

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

@@ -3,7 +3,6 @@ package com.izouma.dingdong.repo;
 import com.izouma.dingdong.domain.Chat;
 import com.izouma.dingdong.domain.Chat;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
 
 
 import java.util.List;
 import java.util.List;
 
 

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

@@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.lang.Nullable;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
 import java.util.List;
 import java.util.List;

+ 17 - 1
src/main/java/com/izouma/dingdong/repo/OrderInfoRepo.java

@@ -1,6 +1,9 @@
 package com.izouma.dingdong.repo;
 package com.izouma.dingdong.repo;
 
 
 import com.izouma.dingdong.domain.OrderInfo;
 import com.izouma.dingdong.domain.OrderInfo;
+import com.izouma.dingdong.enums.MerchantStatus;
+import com.izouma.dingdong.enums.OrderStatus;
+import com.izouma.dingdong.enums.RiderStatus;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;
@@ -8,6 +11,7 @@ import org.springframework.data.jpa.repository.Query;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
 public interface OrderInfoRepo extends JpaRepository<OrderInfo, Long>, JpaSpecificationExecutor<OrderInfo> {
 public interface OrderInfoRepo extends JpaRepository<OrderInfo, Long>, JpaSpecificationExecutor<OrderInfo> {
@@ -26,8 +30,11 @@ public interface OrderInfoRepo extends JpaRepository<OrderInfo, Long>, JpaSpecif
     //按骑手查找
     //按骑手查找
     List<OrderInfo> findAllByRiderId(Long riderId);
     List<OrderInfo> findAllByRiderId(Long riderId);
 
 
+    //按骑手查找状态不为完成的订单
+    List<OrderInfo> findAllByRiderIdAndRiderStatusIsNot(Long riderId, RiderStatus riderStatus);
+
     //按商家和用户查找订单,判断是不是第一次购买
     //按商家和用户查找订单,判断是不是第一次购买
-    List<OrderInfo> findAllByUserIdAndMerchantId(Long userId,Long merchantId);
+    List<OrderInfo> findAllByUserIdAndMerchantId(Long userId, Long merchantId);
 
 
     @Query("select sum (t.realAmount) from OrderInfo t where t.userId = ?1")
     @Query("select sum (t.realAmount) from OrderInfo t where t.userId = ?1")
     BigDecimal sumRealAmountByUserId(Long userId);
     BigDecimal sumRealAmountByUserId(Long userId);
@@ -36,4 +43,13 @@ public interface OrderInfoRepo extends JpaRepository<OrderInfo, Long>, JpaSpecif
     @Modifying
     @Modifying
     @Transactional
     @Transactional
     void deleteAllByMerchantId(Long merchantId);
     void deleteAllByMerchantId(Long merchantId);
+
+    //查找所有五分钟内骑手未接单的订单
+    List<OrderInfo> findAllByStatusAndOrderTimeAfterAndMerchantStatus(OrderStatus status, LocalDateTime time, MerchantStatus merchantStatus);
+
+    //骑手未接单的订单
+    List<OrderInfo> findAllByStatusAndMerchantStatus(OrderStatus status, MerchantStatus merchantStatus);
+
+    //按商家和时间内的订单泪飙
+    List<OrderInfo> findAllByMerchantIdAndOrderTimeAfter(Long merchantId, LocalDateTime dateTime);
 }
 }

+ 0 - 4
src/main/java/com/izouma/dingdong/repo/backstage/CategoryRepo.java

@@ -3,10 +3,6 @@ package com.izouma.dingdong.repo.backstage;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.Category;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
 import java.util.List;
 import java.util.List;
 
 
 public interface CategoryRepo extends JpaRepository<Category, Long>, JpaSpecificationExecutor<Category> {
 public interface CategoryRepo extends JpaRepository<Category, Long>, JpaSpecificationExecutor<Category> {

+ 0 - 4
src/main/java/com/izouma/dingdong/repo/backstage/ChatWordsRepo.java

@@ -3,10 +3,6 @@ package com.izouma.dingdong.repo.backstage;
 import com.izouma.dingdong.domain.backstage.ChatWords;
 import com.izouma.dingdong.domain.backstage.ChatWords;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
 
 
 public interface ChatWordsRepo extends JpaRepository<ChatWords, Long>, JpaSpecificationExecutor<ChatWords> {
 public interface ChatWordsRepo extends JpaRepository<ChatWords, Long>, JpaSpecificationExecutor<ChatWords> {
 }
 }

+ 1 - 2
src/main/java/com/izouma/dingdong/repo/backstage/PriorityRepo.java

@@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
-import java.util.List;
 
 
 public interface PriorityRepo extends JpaRepository<Priority, Long>, JpaSpecificationExecutor<Priority> {
 public interface PriorityRepo extends JpaRepository<Priority, Long>, JpaSpecificationExecutor<Priority> {
     @Query("update Priority t set t.enabled = false where t.id = ?1")
     @Query("update Priority t set t.enabled = false where t.id = ?1")
@@ -15,7 +14,7 @@ public interface PriorityRepo extends JpaRepository<Priority, Long>, JpaSpecific
     @Transactional
     @Transactional
     void deleteById(Long id);
     void deleteById(Long id);
 
 
-    List<Priority> findAllByTypeOrderByLevel(Integer type);
+//    List<Priority> findAllByTypeOrderByLevel(Integer type);
 
 
     Priority findByTypeAndLevel(Integer type, Integer level);
     Priority findByTypeAndLevel(Integer type, Integer level);
 
 

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

@@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
-import java.util.List;
 
 
 public interface AutomaticResponseRepo extends JpaRepository<AutomaticResponse, Long>, JpaSpecificationExecutor<AutomaticResponse> {
 public interface AutomaticResponseRepo extends JpaRepository<AutomaticResponse, Long>, JpaSpecificationExecutor<AutomaticResponse> {
 
 

+ 2 - 2
src/main/java/com/izouma/dingdong/repo/backstage/DeliveryFeeRepo.java → src/main/java/com/izouma/dingdong/repo/rider/DeliveryFeeRepo.java

@@ -1,6 +1,6 @@
-package com.izouma.dingdong.repo.backstage;
+package com.izouma.dingdong.repo.rider;
 
 
-import com.izouma.dingdong.domain.backstage.DeliveryFee;
+import com.izouma.dingdong.domain.rider.DeliveryFee;
 import com.izouma.dingdong.enums.DeliveryType;
 import com.izouma.dingdong.enums.DeliveryType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
src/main/java/com/izouma/dingdong/repo/rider/RiderRepo.java

@@ -11,7 +11,7 @@ public interface RiderRepo extends JpaRepository<Rider, Long>, JpaSpecificationE
 
 
     Optional<Rider> findByUserId(Long userId);
     Optional<Rider> findByUserId(Long userId);
 
 
-    Optional<Rider> findByJobNumber(Long jobNumber);
+    Rider findByJobNumber(String jobNumber);
 
 
     //骑手Id找出用户Id
     //骑手Id找出用户Id
     @Query("select t.userId from Rider t where t.id = ?1")
     @Query("select t.userId from Rider t where t.id = ?1")

+ 8 - 0
src/main/java/com/izouma/dingdong/repo/rider/RiderSignRepo.java

@@ -0,0 +1,8 @@
+package com.izouma.dingdong.repo.rider;
+
+import com.izouma.dingdong.domain.rider.RiderSign;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface RiderSignRepo extends JpaRepository<RiderSign, Long>, JpaSpecificationExecutor<RiderSign> {
+}

+ 4 - 0
src/main/java/com/izouma/dingdong/repo/user/AddressRepo.java

@@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
+import java.util.List;
 
 
 public interface AddressRepo extends JpaRepository<Address, Long>, JpaSpecificationExecutor<Address> {
 public interface AddressRepo extends JpaRepository<Address, Long>, JpaSpecificationExecutor<Address> {
     @Query("update Address t set t.enabled = false where t.id = ?1")
     @Query("update Address t set t.enabled = false where t.id = ?1")
@@ -18,4 +19,7 @@ public interface AddressRepo extends JpaRepository<Address, Long>, JpaSpecificat
     @Modifying
     @Modifying
     @Transactional
     @Transactional
     void updateIsDefault(Long id, Long userId);
     void updateIsDefault(Long id, Long userId);
+
+    //查找用户所有地址
+    List<Address> findAllByUserIdAndEnabledTrue(Long userId);
 }
 }

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

@@ -17,14 +17,12 @@ import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
 import com.izouma.dingdong.repo.OrderInfoRepo;
 import com.izouma.dingdong.repo.OrderInfoRepo;
 
 
 import com.izouma.dingdong.service.merchant.SalesService;
 import com.izouma.dingdong.service.merchant.SalesService;
-import com.izouma.dingdong.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.transaction.Transactional;
 import javax.transaction.Transactional;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 

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

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service;
 package com.izouma.dingdong.service;
 
 
-import com.izouma.dingdong.domain.BankCard;
 import com.izouma.dingdong.repo.BankCardRepo;
 import com.izouma.dingdong.repo.BankCardRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

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

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service;
 package com.izouma.dingdong.service;
 
 
-import com.izouma.dingdong.domain.MoneyRecord;
 import com.izouma.dingdong.repo.MoneyRecordRepo;
 import com.izouma.dingdong.repo.MoneyRecordRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 64 - 110
src/main/java/com/izouma/dingdong/service/OrderInfoService.java

@@ -2,7 +2,6 @@ package com.izouma.dingdong.service;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.izouma.dingdong.converter.StringArrayConverter;
 import com.izouma.dingdong.domain.*;
 import com.izouma.dingdong.domain.*;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.rider.Rider;
 import com.izouma.dingdong.domain.rider.Rider;
@@ -11,7 +10,6 @@ import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.domain.user.UserCoupon;
 import com.izouma.dingdong.domain.user.UserCoupon;
-import com.izouma.dingdong.dto.OrderDTO;
 import com.izouma.dingdong.dto.UserOrderDTO;
 import com.izouma.dingdong.dto.UserOrderDTO;
 import com.izouma.dingdong.enums.*;
 import com.izouma.dingdong.enums.*;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
@@ -25,16 +23,13 @@ import com.izouma.dingdong.repo.user.AddressRepo;
 import com.izouma.dingdong.repo.user.UserCouponRepo;
 import com.izouma.dingdong.repo.user.UserCouponRepo;
 import com.izouma.dingdong.service.merchant.GoodsService;
 import com.izouma.dingdong.service.merchant.GoodsService;
 import com.izouma.dingdong.service.merchant.MerchantService;
 import com.izouma.dingdong.service.merchant.MerchantService;
-import com.izouma.dingdong.service.merchant.MerchantSettingsService;
 import com.izouma.dingdong.service.merchant.SalesService;
 import com.izouma.dingdong.service.merchant.SalesService;
-import com.izouma.dingdong.service.rider.RiderService;
-import com.izouma.dingdong.service.user.ShoppingCartService;
+import com.izouma.dingdong.service.rider.DeliveryFeeService;
+import com.izouma.dingdong.utils.MapUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.time.DayOfWeek;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.LocalTime;
 import java.util.List;
 import java.util.List;
@@ -58,6 +53,7 @@ public class OrderInfoService {
     private UserCouponRepo          userCouponRepo;
     private UserCouponRepo          userCouponRepo;
     private OrderRefundApplyService orderRefundApplyService;
     private OrderRefundApplyService orderRefundApplyService;
     private RiderRepo               riderRepo;
     private RiderRepo               riderRepo;
+    private DeliveryFeeService      deliveryFeeService;
 
 
     /*
     /*
     用户下单
     用户下单
@@ -70,6 +66,7 @@ public class OrderInfoService {
         //商家
         //商家
         MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(cart.getMerchantId())
         MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(cart.getMerchantId())
                 .orElseThrow(new BusinessException("无商家"));
                 .orElseThrow(new BusinessException("无商家"));
+        Merchant merchant = merchantRepo.findById(cart.getMerchantId()).orElseThrow(new BusinessException("无商家"));
 
 
         LocalTime startTime = merchantSettings.getStartTime();
         LocalTime startTime = merchantSettings.getStartTime();
         LocalTime endTime = merchantSettings.getEndTime();
         LocalTime endTime = merchantSettings.getEndTime();
@@ -110,8 +107,22 @@ public class OrderInfoService {
 
 
         //用户地址
         //用户地址
         Address address = addressRepo.findById(userOrderDTO.getAddressId()).orElseThrow(new BusinessException("地址不存在"));
         Address address = addressRepo.findById(userOrderDTO.getAddressId()).orElseThrow(new BusinessException("地址不存在"));
+        //判断与商家的距离
+        Double distance = MapUtils.distance(address.getLongitude(), address.getLatitude(), merchant.getLongitude(), merchant
+                .getLatitude());
+        if (distance > 3000) {
+            throw new BusinessException("超出配送距离");
+        }
+
         //orderInfo.setUserAddress(address.getAddressName());
         //orderInfo.setUserAddress(address.getAddressName());
         orderInfo.setUserAddress(address.getAddressInfo());
         orderInfo.setUserAddress(address.getAddressInfo());
+        //经度在前 纬度在后
+        orderInfo.setLocation(address.getLongitude() + "," + address.getLatitude());
+
+        //重算配送费
+        BigDecimal deliveryFee = deliveryFeeService.deliveryFee(merchant.getId(), cart.getOrderGoodsSpecs(), address.getLongitude(), address
+                .getLatitude());
+        orderInfo.setDeliveryAmount(deliveryFee);
 
 
         // 使用优惠券(满减优惠券)
         // 使用优惠券(满减优惠券)
         if (ObjectUtil.isNotNull(userOrderDTO.getUserCouponId())) {
         if (ObjectUtil.isNotNull(userOrderDTO.getUserCouponId())) {
@@ -199,87 +210,66 @@ public class OrderInfoService {
             orderInfo.setStatus(OrderStatus.CANCELLED);
             orderInfo.setStatus(OrderStatus.CANCELLED);
             orderInfo.setReason(RefundReason.MERCHANT_REJECTION);
             orderInfo.setReason(RefundReason.MERCHANT_REJECTION);
             //退款流程
             //退款流程
-            OrderRefundApply apply = orderRefundApplyService.apply(orderId, RefundReason.MERCHANT_REJECTION, "商家拒单退款");
+            OrderRefundApply apply = orderRefundApplyService.apply(orderId, RefundReason.MERCHANT_REJECTION, "商家拒单退款", null);
             orderRefundApplyService.audit(apply.getId(), true, false);
             orderRefundApplyService.audit(apply.getId(), true, false);
         }
         }
         return orderInfoRepo.save(orderInfo);
         return orderInfoRepo.save(orderInfo);
     }
     }
 
 
-    /*
-    周几
-     */
-    public Boolean week(LocalDate localDate, String week) {
-        DayOfWeek dayOfWeek = localDate.getDayOfWeek();
-
-        System.out.println(dayOfWeek);
-        List<String> strings = new StringArrayConverter().convertToEntityAttribute(week);
-        if (strings.contains("EVERY")) {
-            return true;
-        }
-        return strings.contains(dayOfWeek);
-
-    }
 
 
     /*
     /*
-    骑手接单
-     */
-    public void ridReceiveOrder(Long riderId, Long orderId, Boolean pass) {
+    骑手改变状态
+    */
+    public void riderCarryOut(Long orderId, RiderStatus status, Double longitude, Double latitude) {
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
+
         if (OrderStatus.CANCELLED.equals(orderInfo.getStatus())) {
         if (OrderStatus.CANCELLED.equals(orderInfo.getStatus())) {
             throw new BusinessException("订单已取消");
             throw new BusinessException("订单已取消");
         }
         }
-        if (pass) {
-            orderInfo.setRiderId(riderId);
-            orderInfo.setRiderStatus(RiderStatus.RECEIVED);
-            orderInfoRepo.save(orderInfo);
-        }
-    }
-
-    /*
-    分配骑手
-     */
-
-    /*
-    骑手点状态
-     */
-    public void carryOut(Long orderId, Boolean next) {
-        if (next) {
-
-            OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
-
-
-            if (OrderStatus.CANCELLED.equals(orderInfo.getStatus())) {
-                throw new BusinessException("订单已取消");
-            }
 
 
-            if (MerchantStatus.RECEIVED.equals(orderInfo.getMerchantStatus())) {
-                RiderStatus riderStatus = orderInfo.getRiderStatus();
-                switch (riderStatus) {
-                    case RECEIVED:
-                        orderInfo.setRiderStatus(RiderStatus.TAKE_MEAL);
-                        break;
-                    case TAKE_MEAL:
-                        orderInfo.setRiderStatus(RiderStatus.MEAL_DELIVERY);
-                        break;
-                    case MEAL_DELIVERY:
-                        orderInfo.setRiderStatus(RiderStatus.CARRY_OUT);
-                        orderInfo.setUserReceivedTime(LocalDateTime.now());
-                        orderInfo.setStatus(OrderStatus.RATED);
-
-                        //支付价钱
-                        orderRefundApplyService.orderCarryOut(orderId);
-                        //添加销量数据
-                        salesService.addSale(orderInfo);
-                        break;
+        //RiderStatus riderStatus = orderInfo.getRiderStatus();
+        switch (status) {
+            //已接单状态 待取餐
+            case ARRIVE:
+                //判断是否到达商家位置
+                Merchant merchant = orderInfo.getMerchant();
+                Double latitude1 = merchant.getLatitude();
+                Double longitude1 = merchant.getLongitude();
+                if (MapUtils.distance(longitude, latitude, longitude1, latitude1) > 5.0) {
+                    throw new BusinessException("未到店");
                 }
                 }
-                orderInfoRepo.save(orderInfo);
-            } else {
-                throw new BusinessException("出错");
-            }
+                //待取餐
+                orderInfo.setRiderStatus(RiderStatus.ARRIVE);
+                break;
+            case TAKE_MEAL:
+                //已取餐 待送达
+                orderInfo.setRiderStatus(RiderStatus.TAKE_MEAL);
+                //商家状态已完成
+                orderInfo.setMerchantStatus(MerchantStatus.CARRY_OUT);
+                break;
+            case CARRY_OUT:
+                //确认是否到达用户地址位置
+                Address address = addressRepo.findById(orderInfo.getAddressId())
+                        .orElseThrow(new BusinessException("地址不存在"));
+                Double latitude2 = address.getLatitude();
+                Double longitude2 = address.getLongitude();
+                if (MapUtils.distance(longitude, latitude, longitude2, latitude2) > 5) {
+                    throw new BusinessException("未到用户地点");
+                }
+                //已送达
+                orderInfo.setRiderStatus(RiderStatus.CARRY_OUT);
+                orderInfo.setUserReceivedTime(LocalDateTime.now());
+                orderInfo.setStatus(OrderStatus.RATED);
+
+                //支付价钱
+                orderRefundApplyService.orderCarryOut(orderId);
+                //添加销量数据
+                salesService.addSale(orderInfo);
+                break;
         }
         }
+        orderInfoRepo.save(orderInfo);
     }
     }
 
 
-
     /**
     /**
      * 按用户ID查出用户/商家/骑手订单
      * 按用户ID查出用户/商家/骑手订单
      *
      *
@@ -305,28 +295,10 @@ public class OrderInfoService {
     }
     }
 
 
 
 
-    public OrderDTO toDTO(OrderInfo orderInfo) {
-        OrderDTO dto = new OrderDTO();
-        BeanUtil.copyProperties(orderInfo, dto);
-        User user = userRepo.findById(orderInfo.getUserId()).orElseThrow(new BusinessException("无用户"));
-        dto.setNickname(user.getNickname());
-        dto.setAvatar(user.getAvatar());
-
-        Merchant merchant = merchantRepo.findById(orderInfo.getMerchantId()).orElseThrow(new BusinessException("无商家"));
-        //MerchantSettings merchantSettings = merchantSettingsRepo.findByMerchantId(orderInfo.getMerchantId()).orElseThrow(new BusinessException("无商家"));
-        dto.setMerchantName(merchant.getShowName());
-        dto.setLogo(merchant.getLogo());
-
-        List<OrderGoodsSpec> specs = orderGoodsSpecRepo.findAllByOrderInfoId(orderInfo.getId());
-        dto.setOrderGoodsSpecs(specs);
-
-        return dto;
-    }
-
     /*
     /*
     用户取消订单
     用户取消订单
      */
      */
-    public OrderInfo cancel(Long id, RefundReason reason) {
+    public OrderInfo cancel(Long id, RefundReason reason, String remark, String img) {
         OrderInfo orderInfo = orderInfoRepo.findById(id).orElseThrow(new BusinessException("无订单"));
         OrderInfo orderInfo = orderInfoRepo.findById(id).orElseThrow(new BusinessException("无订单"));
 
 
         if (orderInfo.getStatus().equals(OrderStatus.UNPAID)) {
         if (orderInfo.getStatus().equals(OrderStatus.UNPAID)) {
@@ -351,7 +323,7 @@ public class OrderInfoService {
                 throw new BusinessException("已完成无法取消");
                 throw new BusinessException("已完成无法取消");
             }
             }
 
 
-            OrderRefundApply apply = orderRefundApplyService.apply(id, reason, null);
+            OrderRefundApply apply = orderRefundApplyService.apply(id, reason, remark, img);
             //商家未接单,直接退
             //商家未接单,直接退
             if (MerchantStatus.NOT_RECEIVED.equals(orderInfo.getMerchantStatus())) {
             if (MerchantStatus.NOT_RECEIVED.equals(orderInfo.getMerchantStatus())) {
                 orderRefundApplyService.audit(apply.getId(), true, false);
                 orderRefundApplyService.audit(apply.getId(), true, false);
@@ -373,28 +345,10 @@ public class OrderInfoService {
     用户取消 取消订单
     用户取消 取消订单
      */
      */
 /*    public void cancelCancelOrder(Long orderId) {
 /*    public void cancelCancelOrder(Long orderId) {
-
-
     }*/
     }*/
 
 
-    /*
-    订单完成结算钱
-     */
-/*    public void orderCarryOut(Long orderId) {
-        OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
 
 
-        //扣除金额
-        SysConfig sysConfig = sysConfigRepo.findByName("commission").orElseThrow(new BusinessException("无设置"));
-        //平台抽成
-        BigDecimal platform = orderInfo.getRealAmount().multiply(new BigDecimal(sysConfig.getValue()));
 
 
-        //商家应得 = 减去骑手应得,减去平台抽成
-        BigDecimal deserve = orderInfo.getRealAmount().subtract(orderInfo.getDeliveryAmount()).subtract(platform);
-        merchantSettingsService.income(orderInfo.getMerchantId(), orderInfo.getUserId(), deserve, FinancialType.INCOME);
-
-        //骑手应得
-        riderService.income(orderInfo.getRiderId(), orderInfo.getUserId(), orderInfo.getDeliveryAmount(), FinancialType.INCOME);
-    }*/
 
 
     /*
     /*
     支付倒计时
     支付倒计时

+ 3 - 3
src/main/java/com/izouma/dingdong/service/OrderRefundApplyService.java

@@ -43,8 +43,6 @@ public class OrderRefundApplyService {
     @Autowired
     @Autowired
     private RiderService            riderService;
     private RiderService            riderService;
     @Autowired
     @Autowired
-    private RiderRepo               riderRepo;
-    @Autowired
     private SysConfigRepo           sysConfigRepo;
     private SysConfigRepo           sysConfigRepo;
 
 
     private OrderStatus status;
     private OrderStatus status;
@@ -55,8 +53,9 @@ public class OrderRefundApplyService {
      * @param orderId 订单号
      * @param orderId 订单号
      * @param reason  退款缘由
      * @param reason  退款缘由
      * @param remark  备注
      * @param remark  备注
+     * @param img     图片
      */
      */
-    public OrderRefundApply apply(Long orderId, RefundReason reason, String remark) {
+    public OrderRefundApply apply(Long orderId, RefundReason reason, String remark, String img) {
         OrderInfo order = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无记录"));
         OrderInfo order = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无记录"));
 
 
         OrderRefundApply apply = orderRefundApplyRepo.findByOrderId(orderId);
         OrderRefundApply apply = orderRefundApplyRepo.findByOrderId(orderId);
@@ -89,6 +88,7 @@ public class OrderRefundApplyService {
                 .status(RefundStatus.PENDING)
                 .status(RefundStatus.PENDING)
                 .applyTime(LocalDateTime.now())
                 .applyTime(LocalDateTime.now())
                 .reason(reason)
                 .reason(reason)
+                .img(img)
                 .remark(remark)
                 .remark(remark)
                 .orderId(orderId)
                 .orderId(orderId)
                 .enabled(true)
                 .enabled(true)

+ 17 - 30
src/main/java/com/izouma/dingdong/service/UserService.java

@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.dto.MerchantDTO;
@@ -35,23 +36,23 @@ import static com.izouma.dingdong.enums.Identity.*;
 @Slf4j
 @Slf4j
 @AllArgsConstructor
 @AllArgsConstructor
 public class UserService {
 public class UserService {
-    private UserRepo userRepo;
-    private WxMaService wxMaService;
-    private WxMpService wxMpService;
-    private SmsService smsService;
+    private UserRepo       userRepo;
+    private WxMaService    wxMaService;
+    private WxMpService    wxMpService;
+    private SmsService     smsService;
     private StorageService storageService;
     private StorageService storageService;
-    private JwtTokenUtil jwtTokenUtil;
+    private JwtTokenUtil   jwtTokenUtil;
 
 
 
 
     /*
     /*
     创建User
     创建User
      */
      */
     public User register(String phone, String password, Identity identity) {
     public User register(String phone, String password, Identity identity) {
-        //用于商家登录
-        User user = userRepo.findByPhone(phone);
+        User user = userRepo.findByPhoneAndIdentity(phone, identity);
         if (ObjectUtil.isNull(user)) {
         if (ObjectUtil.isNull(user)) {
-            user = User.builder().username(phone)
-                    .password(new BCryptPasswordEncoder().encode(password))
+            user = User.builder()
+                    .username(phone)
+                    .nickname(UUID.randomUUID().toString())
                     .blacklist(false)
                     .blacklist(false)
                     .enabled(true)
                     .enabled(true)
                     .phone(phone)
                     .phone(phone)
@@ -60,15 +61,16 @@ public class UserService {
                     .money(BigDecimal.ZERO)
                     .money(BigDecimal.ZERO)
                     .enabled(true)
                     .enabled(true)
                     .build();
                     .build();
-        } else {
-            user.setPassword(new BCryptPasswordEncoder().encode(password));
+            if (StrUtil.isNotBlank(password)) {
+                user.setPassword(new BCryptPasswordEncoder().encode(password));
+            }
+            userRepo.save(user);
         }
         }
-
-        return userRepo.save(user);
+        return user;
     }
     }
 
 
     public User merUser(MerchantDTO merchantDTO) {
     public User merUser(MerchantDTO merchantDTO) {
-        User user = userRepo.findByPhone(merchantDTO.getPhone());
+        User user = userRepo.findByPhoneAndIdentity(merchantDTO.getPhone(), MERCHANT);
         if (ObjectUtil.isNotEmpty(user)) {
         if (ObjectUtil.isNotEmpty(user)) {
             throw new BusinessException("此手机号已注册");
             throw new BusinessException("此手机号已注册");
         }
         }
@@ -100,22 +102,7 @@ public class UserService {
                     .enabled(true)
                     .enabled(true)
                     .avatar(Constants.DEFAULT_AVATAR)
                     .avatar(Constants.DEFAULT_AVATAR)
                     .build();
                     .build();
-
-        }
-        return user;
-    }
-
-    public User loginByPhoneAndIdentity(String phone, Identity identity) {
-        User user = userRepo.findByPhoneAndIdentity(phone, identity);
-        if (user == null) {
-            user = User.builder()
-                    .username(UUID.randomUUID().toString())
-                    .nickname(phone)
-                    .phone(phone)
-                    .identity(identity)
-                    .enabled(true)
-                    .avatar(Constants.DEFAULT_AVATAR)
-                    .build();
+            userRepo.save(user);
         }
         }
         return user;
         return user;
     }
     }

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/BannerService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Banner;
 import com.izouma.dingdong.repo.backstage.BannerRepo;
 import com.izouma.dingdong.repo.backstage.BannerRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 2 - 4
src/main/java/com/izouma/dingdong/service/backstage/BlackListService.java

@@ -4,14 +4,12 @@ import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.domain.backstage.BlackList;
 import com.izouma.dingdong.domain.backstage.BlackList;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.rider.Rider;
 import com.izouma.dingdong.domain.rider.Rider;
-import com.izouma.dingdong.dto.PageQuery;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.backstage.BlackListRepo;
 import com.izouma.dingdong.repo.backstage.BlackListRepo;
 import com.izouma.dingdong.repo.merchant.MerchantRepo;
 import com.izouma.dingdong.repo.merchant.MerchantRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
@@ -50,7 +48,7 @@ public class BlackListService {
                 Rider rider = riderRepo.findByUserId(userId).orElseThrow(new BusinessException("骑手不存在"));
                 Rider rider = riderRepo.findByUserId(userId).orElseThrow(new BusinessException("骑手不存在"));
                 rider.setBlacklist(true);
                 rider.setBlacklist(true);
                 riderRepo.save(rider);
                 riderRepo.save(rider);
-                build.setOtherId(rider.getJobNumber());
+                build.setOtherId(rider.getId());
                 break;
                 break;
             case USER:
             case USER:
                 user.setBlacklist(true);
                 user.setBlacklist(true);
@@ -106,7 +104,7 @@ public class BlackListService {
                 break;
                 break;
 
 
             case RIDER:
             case RIDER:
-                Rider rider = riderRepo.findByJobNumber(blackList.getOtherId())
+                Rider rider = riderRepo.findById(blackList.getOtherId())
                         .orElseThrow(new BusinessException("无骑手"));
                         .orElseThrow(new BusinessException("无骑手"));
                 rider.setBlacklist(false);
                 rider.setBlacklist(false);
                 riderRepo.save(rider);
                 riderRepo.save(rider);

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/CategoryService.java

@@ -4,7 +4,6 @@ package com.izouma.dingdong.service.backstage;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.Category;
-import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.dto.MerchantDTO;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/ChatWordsService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.ChatWords;
 import com.izouma.dingdong.repo.backstage.ChatWordsRepo;
 import com.izouma.dingdong.repo.backstage.ChatWordsRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/ComplaintService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Complaint;
 import com.izouma.dingdong.repo.backstage.ComplaintRepo;
 import com.izouma.dingdong.repo.backstage.ComplaintRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/CooperateApplyService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.CooperateApply;
 import com.izouma.dingdong.repo.backstage.CooperateApplyRepo;
 import com.izouma.dingdong.repo.backstage.CooperateApplyRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 62
src/main/java/com/izouma/dingdong/service/backstage/DeliveryFeeService.java

@@ -1,62 +0,0 @@
-package com.izouma.dingdong.service.backstage;
-
-import com.izouma.dingdong.domain.OrderInfo;
-import com.izouma.dingdong.domain.backstage.DeliveryFee;
-import com.izouma.dingdong.domain.merchant.Merchant;
-import com.izouma.dingdong.domain.user.Address;
-import com.izouma.dingdong.enums.DeliveryType;
-import com.izouma.dingdong.exception.BusinessException;
-import com.izouma.dingdong.repo.OrderInfoRepo;
-import com.izouma.dingdong.repo.backstage.DeliveryFeeRepo;
-import com.izouma.dingdong.repo.merchant.MerchantRepo;
-import com.izouma.dingdong.repo.user.AddressRepo;
-import com.izouma.dingdong.utils.MapUtils;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class DeliveryFeeService {
-
-    private DeliveryFeeRepo deliveryFeeRepo;
-    private OrderInfoRepo orderInfoRepo;
-    private AddressRepo addressRepo;
-    private MerchantRepo merchantRepo;
-
-    public void riderAll(Long riderId, OrderInfo orderInfo, Long addressId) {
-
-        List<OrderInfo> infos = orderInfoRepo.findAllByRiderId(riderId);
-
-        BigDecimal amount = BigDecimal.ZERO;
-
-        //算距离
-        Address address = addressRepo.findById(addressId).orElseThrow(new BusinessException("无地址"));
-        Merchant merchant = merchantRepo.findById(orderInfo.getMerchantId()).orElseThrow(new BusinessException("无商户"));
-        Double distance = MapUtils.distance(address.getLongitude(), address.getLatitude(), merchant.getLongitude(), merchant.getLatitude());
-
-        //基础距离费用
-        DeliveryFee baseFee = deliveryFeeRepo.findAllByType(DeliveryType.BASE_FEE).get(0);
-        //基础距离
-        Double baseRule = new Double(baseFee.getRule());
-        //费用
-        amount = new BigDecimal(baseFee.getValue());
-        if (distance > baseRule) {
-            //超出距离费用
-            DeliveryFee excessCost = deliveryFeeRepo.findAllByType(DeliveryType.EXCESS_COST).get(0);
-            //超出距离规格
-            Double excessRule = new Double(excessCost.getRule());
-            //超出费用值
-            BigDecimal excessFee = new BigDecimal(excessCost.getValue());
-
-            Double rule = (distance - baseRule) / excessRule;
-
-
-        }
-
-
-    }
-
-}

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/EmailService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Email;
 import com.izouma.dingdong.repo.backstage.EmailRepo;
 import com.izouma.dingdong.repo.backstage.EmailRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/MerchantNatureService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.repo.backstage.MerchantNatureRepo;
 import com.izouma.dingdong.repo.backstage.MerchantNatureRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/PriorityService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Priority;
 import com.izouma.dingdong.repo.backstage.PriorityRepo;
 import com.izouma.dingdong.repo.backstage.PriorityRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/PromoteService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Promote;
 import com.izouma.dingdong.repo.backstage.PromoteRepo;
 import com.izouma.dingdong.repo.backstage.PromoteRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/TagService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Tag;
 import com.izouma.dingdong.repo.backstage.TagRepo;
 import com.izouma.dingdong.repo.backstage.TagRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/backstage/TimeTagService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.TimeTag;
 import com.izouma.dingdong.repo.backstage.TimeTagRepo;
 import com.izouma.dingdong.repo.backstage.TimeTagRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

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

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.backstage;
 package com.izouma.dingdong.service.backstage;
 
 
-import com.izouma.dingdong.domain.backstage.Voice;
 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;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/merchant/AutomaticResponseService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.merchant;
 package com.izouma.dingdong.service.merchant;
 
 
-import com.izouma.dingdong.domain.merchant.AutomaticResponse;
 import com.izouma.dingdong.repo.merchant.AutomaticResponseRepo;
 import com.izouma.dingdong.repo.merchant.AutomaticResponseRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 1 - 5
src/main/java/com/izouma/dingdong/service/merchant/FullReductionService.java

@@ -1,13 +1,9 @@
 package com.izouma.dingdong.service.merchant;
 package com.izouma.dingdong.service.merchant;
 
 
-import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.merchant.FullReduction;
 import com.izouma.dingdong.domain.merchant.FullReduction;
-import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.dto.FullReductionDTO;
 import com.izouma.dingdong.dto.FullReductionDTO;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.merchant.FullReductionRepo;
 import com.izouma.dingdong.repo.merchant.FullReductionRepo;
-import com.izouma.dingdong.repo.merchant.MerchantRepo;
-import com.izouma.dingdong.utils.ObjUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -19,7 +15,7 @@ public class FullReductionService {
 
 
     private FullReductionRepo fullReductionRepo;
     private FullReductionRepo fullReductionRepo;
 
 
-    private MerchantRepo merchantRepo;
+//    private MerchantRepo merchantRepo;
 
 
     private MerchantService merchantService;
     private MerchantService merchantService;
 
 

+ 13 - 5
src/main/java/com/izouma/dingdong/service/merchant/GoodsService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.merchant;
 package com.izouma.dingdong.service.merchant;
 
 
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.converter.LongArrayConverter;
 import com.izouma.dingdong.converter.LongArrayConverter;
@@ -26,6 +25,7 @@ import org.springframework.stereotype.Service;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -46,6 +46,7 @@ public class GoodsService {
     private ShoppingCartService           shoppingCartService;
     private ShoppingCartService           shoppingCartService;
     private OrderGoodsSpecRepo            orderGoodsSpecRepo;
     private OrderGoodsSpecRepo            orderGoodsSpecRepo;
     private ShoppingCartRepo              shoppingCartRepo;
     private ShoppingCartRepo              shoppingCartRepo;
+//    private SalesRepo                     salesRepo;
 
 
     /**
     /**
      * 添加修改商品
      * 添加修改商品
@@ -272,19 +273,25 @@ public class GoodsService {
         //用户3km以内的商品
         //用户3km以内的商品
         List<Goods> goodsList = new ArrayList<>();
         List<Goods> goodsList = new ArrayList<>();
         for (MerchantDTO d : dtos) {
         for (MerchantDTO d : dtos) {
-            goodsList.addAll(goodsRepo.findAllByMerchantIdAndStatus(d.getMid(),ApplyStatus.PASS));
+            goodsList.addAll(goodsRepo.findAllByMerchantIdAndStatus(d.getMid(), ApplyStatus.PASS));
         }
         }
 
 
+        //过滤掉不是本日营业的商品
+        String dayOfWeek = LocalDateTime.now().getDayOfWeek().toString();
+        List<Goods> list = goodsList.stream()
+                .filter(g -> g.getWeek().contains(dayOfWeek))
+                .collect(Collectors.toList());
+
         List<Goods> all = new ArrayList<>();
         List<Goods> all = new ArrayList<>();
         switch (type) {
         switch (type) {
             case PRAISE_FOOD://好评美食
             case PRAISE_FOOD://好评美食
-                all.addAll(goodsList.stream().filter(Goods::getPraise).collect(Collectors.toList()));
+                all.addAll(list.stream().filter(Goods::getPraise).collect(Collectors.toList()));
                 break;
                 break;
             case POPULAR_FOOD://人气美食
             case POPULAR_FOOD://人气美食
-                all.addAll(goodsList.stream().filter(Goods::getPopularity).collect(Collectors.toList()));
+                all.addAll(list.stream().filter(Goods::getPopularity).collect(Collectors.toList()));
                 break;
                 break;
             case SIGNBOARD_FOOD://招牌美食
             case SIGNBOARD_FOOD://招牌美食
-                all.addAll(goodsList.stream().filter(Goods::getSignboard)
+                all.addAll(list.stream().filter(Goods::getSignboard)
                         .sorted((a, b) -> b.getPriority().compareTo(a.getPriority())).collect(Collectors.toList()));
                         .sorted((a, b) -> b.getPriority().compareTo(a.getPriority())).collect(Collectors.toList()));
                 break;
                 break;
         }
         }
@@ -294,6 +301,7 @@ public class GoodsService {
             //从大到小
             //从大到小
 //            int i = b.getPriority().compareTo(a.getPriority());
 //            int i = b.getPriority().compareTo(a.getPriority());
 //            if (i == 0) {
 //            if (i == 0) {
+
             MerchantDTO dtoA = dtos.stream()
             MerchantDTO dtoA = dtos.stream()
                     .filter(d -> d.getMid().equals(a.getMerchantId()))
                     .filter(d -> d.getMid().equals(a.getMerchantId()))
                     .findFirst()
                     .findFirst()

+ 0 - 1
src/main/java/com/izouma/dingdong/service/merchant/GoodsSpecificationService.java

@@ -2,7 +2,6 @@ package com.izouma.dingdong.service.merchant;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.merchant.GoodsSpecification;
 import com.izouma.dingdong.domain.merchant.GoodsSpecification;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;

+ 3 - 7
src/main/java/com/izouma/dingdong/service/merchant/MerchantClassificationService.java

@@ -2,21 +2,17 @@ package com.izouma.dingdong.service.merchant;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.converter.LongArrayConverter;
 import com.izouma.dingdong.converter.LongArrayConverter;
-import com.izouma.dingdong.converter.StringArrayConverter;
 import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.MerchantClassification;
 import com.izouma.dingdong.domain.merchant.MerchantClassification;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.MerchantClassificationRepo;
 import com.izouma.dingdong.repo.merchant.MerchantClassificationRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.List;
 import java.util.List;
-import java.util.Set;
 
 
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
@@ -70,9 +66,9 @@ public class MerchantClassificationService {
         List<Long> goodsIds = converter.convertToEntityAttribute(merchantClassification.getGoodsIds());
         List<Long> goodsIds = converter.convertToEntityAttribute(merchantClassification.getGoodsIds());
 
 
         List<Goods> goods = CollUtil.newArrayList();
         List<Goods> goods = CollUtil.newArrayList();
-        goodsIds.forEach(s -> {
-            goods.add(goodsRepo.findById(s).orElse(null));
-        });
+        goodsIds.forEach(s ->
+                goods.add(goodsRepo.findById(s).orElse(null))
+        );
         return goods;
         return goods;
     }
     }
 
 

+ 22 - 16
src/main/java/com/izouma/dingdong/service/merchant/MerchantService.java

@@ -29,17 +29,12 @@ import com.izouma.dingdong.utils.ObjUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Predicate;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -54,13 +49,11 @@ public class MerchantService {
     private UserRepo                   userRepo;
     private UserRepo                   userRepo;
     private MerchantClassificationRepo merchantClassificationRepo;
     private MerchantClassificationRepo merchantClassificationRepo;
     private VerifiedRepo               verifiedRepo;
     private VerifiedRepo               verifiedRepo;
-
-    private FullReductionRepo fullReductionRepo;
-    private CouponRepo        couponRepo;
-    private UserCouponRepo    userCouponRepo;
-    private CategoryRepo      categoryRepo;
-
-    private GoodsRepo goodsRepo;
+    private FullReductionRepo          fullReductionRepo;
+    private CouponRepo                 couponRepo;
+    private UserCouponRepo             userCouponRepo;
+    private CategoryRepo               categoryRepo;
+    private GoodsRepo                  goodsRepo;
 
 
     /*
     /*
     商户注册申请
     商户注册申请
@@ -70,7 +63,6 @@ public class MerchantService {
         // User user = userService.register(merchantDTO.getPhone(), merchantDTO.getPassword());
         // User user = userService.register(merchantDTO.getPhone(), merchantDTO.getPassword());
         User user = userRepo.findByPhone(merchantDTO.getPhone());
         User user = userRepo.findByPhone(merchantDTO.getPhone());
 
 
-
         //查看商家是否已存在
         //查看商家是否已存在
         Merchant merchant1 = merchantRepo.findByPhone(merchantDTO.getPhone());
         Merchant merchant1 = merchantRepo.findByPhone(merchantDTO.getPhone());
 
 
@@ -422,8 +414,14 @@ public class MerchantService {
         merchantSettingsRepo.save(merchant);
         merchantSettingsRepo.save(merchant);
     }
     }
 
 
-    /*
-    距离排序,如果有范围,范围内进行排序
+    /**
+     * 距离排序,如果有范围,范围内进行排序
+     *
+     * @param merchants 商家列表
+     * @param longitude 经度
+     * @param latitude  纬度
+     * @param range     范围
+     * @return 商家及距离
      */
      */
     public Map<Merchant, Double> distanceSorting(Set<Merchant> merchants, Double longitude, Double latitude, Double range) {
     public Map<Merchant, Double> distanceSorting(Set<Merchant> merchants, Double longitude, Double latitude, Double range) {
         //所有商家要按距离排序规则
         //所有商家要按距离排序规则
@@ -456,7 +454,15 @@ public class MerchantService {
         return merchantMap;
         return merchantMap;
     }
     }
 
 
-    //带距离的商家
+    /**
+     * 带距离的商家
+     *
+     * @param merchants 商户列表
+     * @param longitude 经度
+     * @param latitude  纬度
+     * @param range     范围
+     * @return 商家列表
+     */
     public List<MerchantDTO> withDistance(Set<Merchant> merchants, Double longitude, Double latitude, Double range) {
     public List<MerchantDTO> withDistance(Set<Merchant> merchants, Double longitude, Double latitude, Double range) {
         Map<Merchant, Double> merchantMap = this.distanceSorting(merchants, longitude, latitude, range);
         Map<Merchant, Double> merchantMap = this.distanceSorting(merchants, longitude, latitude, range);
         List<MerchantDTO> dtos = new ArrayList<>();
         List<MerchantDTO> dtos = new ArrayList<>();

+ 11 - 4
src/main/java/com/izouma/dingdong/service/merchant/MerchantSettingsService.java

@@ -65,11 +65,14 @@ public class MerchantSettingsService {
      */
      */
     public List<MerchantDTO> timeMerchant(Long timeTagId) {
     public List<MerchantDTO> timeMerchant(Long timeTagId) {
         TimeTag timeTag = timeTagRepo.findById(timeTagId).orElseThrow(new BusinessException("无时间标签"));
         TimeTag timeTag = timeTagRepo.findById(timeTagId).orElseThrow(new BusinessException("无时间标签"));
+        String dayOfWeek = LocalDateTime.now().getDayOfWeek().toString();
+
         List<MerchantSettings> all = merchantSettingsRepo.findAll();
         List<MerchantSettings> all = merchantSettingsRepo.findAll();
         List<MerchantSettings> collect = all.stream().filter(a ->
         List<MerchantSettings> collect = all.stream().filter(a ->
-                //商家开始时间早于结束前的一小时 或者 商家结束时间早于开始后的一小时
-                !a.getStartTime().isAfter(timeTag.getEndTime().minusHours(1)) || !a.getEndTime()
-                        .isAfter(timeTag.getStartTime().plusHours(1))
+                //商家开始时间早于结束前的一小时 或者 商家结束时间早于开始后的一小时 且商家本日营业
+                (!a.getStartTime().isAfter(timeTag.getEndTime().minusHours(1)) || !a.getEndTime()
+                        .isAfter(timeTag.getStartTime().plusHours(1))) && a.getIsOpening() && a.getWeek()
+                        .contains(dayOfWeek)
         ).collect(Collectors.toList());
         ).collect(Collectors.toList());
 
 
         List<MerchantDTO> list = CollUtil.newArrayList();
         List<MerchantDTO> list = CollUtil.newArrayList();
@@ -241,10 +244,14 @@ public class MerchantSettingsService {
     public List<MerchantDTO> listSort(Double longitude, Double latitude, Integer sort) {
     public List<MerchantDTO> listSort(Double longitude, Double latitude, Integer sort) {
         //处于营业内
         //处于营业内
         LocalTime now = LocalTime.now();
         LocalTime now = LocalTime.now();
+        String dayOfWeek = LocalDateTime.now().getDayOfWeek().toString();
         List<MerchantSettings> all = merchantSettingsRepo.findAll();
         List<MerchantSettings> all = merchantSettingsRepo.findAll();
 
 
         List<MerchantSettings> collect = all.stream()
         List<MerchantSettings> collect = all.stream()
-                .filter(a -> a.getStartTime().isBefore(now) && a.getEndTime().isAfter(now) && a.getPriority() >= 2)
+                .filter(a -> a.getStartTime().isBefore(now) && a.getEndTime().isAfter(now) && a.getPriority() >= 2
+                        && a.getIsOpening() && a.getWeek()
+                        .contains(dayOfWeek)
+                )
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         Set<Merchant> merchantList = new HashSet<>();
         Set<Merchant> merchantList = new HashSet<>();
 
 

+ 0 - 1
src/main/java/com/izouma/dingdong/service/merchant/SalesService.java

@@ -7,7 +7,6 @@ import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.MerchantClassification;
 import com.izouma.dingdong.domain.merchant.MerchantClassification;
 import com.izouma.dingdong.domain.merchant.Sales;
 import com.izouma.dingdong.domain.merchant.Sales;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
-import com.izouma.dingdong.repo.AppraisalRepo;
 import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
 import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.MerchantClassificationRepo;
 import com.izouma.dingdong.repo.merchant.MerchantClassificationRepo;

+ 128 - 0
src/main/java/com/izouma/dingdong/service/rider/DeliveryFeeService.java

@@ -0,0 +1,128 @@
+package com.izouma.dingdong.service.rider;
+
+import com.izouma.dingdong.domain.OrderGoodsSpec;
+import com.izouma.dingdong.domain.rider.DeliveryFee;
+import com.izouma.dingdong.domain.merchant.Merchant;
+import com.izouma.dingdong.enums.DeliveryType;
+import com.izouma.dingdong.exception.BusinessException;
+import com.izouma.dingdong.repo.OrderInfoRepo;
+import com.izouma.dingdong.repo.rider.DeliveryFeeRepo;
+import com.izouma.dingdong.repo.merchant.MerchantRepo;
+import com.izouma.dingdong.utils.MapUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class DeliveryFeeService {
+
+    private DeliveryFeeRepo deliveryFeeRepo;
+    private OrderInfoRepo   orderInfoRepo;
+    private MerchantRepo    merchantRepo;
+
+    /**
+     * 配送费用
+     *
+     * @param merchantId      商户ID
+     * @param orderGoodsSpecs 订单商品及规格
+     * @param longitude       经度
+     * @param latitude        纬度
+     * @return 配送费
+     */
+    public BigDecimal deliveryFee(Long merchantId, List<OrderGoodsSpec> orderGoodsSpecs, Double longitude, Double latitude) {
+
+        //基础费用
+        BigDecimal amount;
+        //算距离
+        //Address address = addressRepo.findById(orderInfo.getAddressId()).orElseThrow(new BusinessException("无地址"));
+        Merchant merchant = merchantRepo.findById(merchantId).orElseThrow(new BusinessException("无商户"));
+        Double distance = MapUtils.distance(longitude, latitude, merchant.getLongitude(), merchant
+                .getLatitude());
+        //基础距离费用的配置
+        DeliveryFee baseFee = deliveryFeeRepo.findAllByType(DeliveryType.BASE_FEE).get(0);
+        //基础距离的配置值
+        Double baseRule = new Double(baseFee.getRule());
+        //费用
+        amount = new BigDecimal(baseFee.getValue());
+        if (distance > baseRule) {
+            //超出距离费用的配置
+            DeliveryFee excessCost = deliveryFeeRepo.findAllByType(DeliveryType.EXCESS_COST).get(0);
+            //超出距离规格的配置值
+            Double excessRule = new Double(excessCost.getRule());
+            //超出费用值
+            BigDecimal excessFee = new BigDecimal(excessCost.getValue());
+            //超出距离规格的几倍 向上取整
+            double rule = (distance - baseRule) / excessRule;
+            double ceil = Math.ceil(rule);
+            //加上超出的费用
+            amount = amount.add(excessFee.multiply(new BigDecimal(ceil)));
+        }
+
+        //配送系数
+        //骑手的商品数量
+        Double num = 0.0;
+        //List<OrderGoodsSpec> orderGoodsSpecs = cart.getOrderGoodsSpecs();
+        for (OrderGoodsSpec o : orderGoodsSpecs) {
+            num = o.getNum() + num;
+        }
+        //配送系数的配置
+        DeliveryFee distributionFactor = deliveryFeeRepo.findAllByType(DeliveryType.NUMBER_OF_DELIVERY).get(0);
+        //配送系数的配置值
+        Integer factorRule = new Integer(distributionFactor.getRule());
+        //配送系数
+        //商品数是配送系数的几倍 每超出几件+1 向下取整
+        double factor = Math.floor(num / factorRule) + 1;
+
+        //当前日期时间
+        LocalDateTime now = LocalDateTime.now();
+        //繁忙系数
+        //获取繁忙时间配置
+        DeliveryFee minutes = deliveryFeeRepo.findAllByType(DeliveryType.BUSY_MINUTES).get(0);
+        //繁忙时间配置值
+        long timeRule = Long.parseLong(minutes.getRule());
+        //当前时间内商家的订单列表
+        int merchantOrders = orderInfoRepo.findAllByMerchantIdAndOrderTimeAfter(merchantId, now
+                .plusMinutes(timeRule)).size();
+        //繁忙系数配置列表
+        List<DeliveryFee> merchantCoefficient = deliveryFeeRepo.findAllByType(DeliveryType.BUSYNESS_FACTOR);
+        //从大到小排序
+        merchantCoefficient.sort((a, b) -> b.getValue().compareTo(a.getValue()));
+        //繁忙系数
+        Integer mc = 1;
+        for (DeliveryFee m : merchantCoefficient) {
+            if (merchantOrders > Integer.parseInt(m.getRule())) {
+                mc = m.getValue();
+                break;
+            }
+        }
+
+        //时段系数
+        //当前时间
+        LocalTime nowTime = now.toLocalTime();
+        //时间系数
+        Integer time = 1;
+        //时段系数的配置列表
+        List<DeliveryFee> timeCoefficient = deliveryFeeRepo.findAllByType(DeliveryType.TIME_COEFFICIENT);
+        for (DeliveryFee t : timeCoefficient) {
+            //时间段
+            String rule = t.getRule();
+            String[] arr = rule.split("-");
+            LocalTime startTime = LocalTime.parse(arr[0]);
+            LocalTime endTime = LocalTime.parse(arr[1]);
+            if (!nowTime.isBefore(startTime) && !nowTime.isAfter(endTime)) {
+                time = t.getValue();
+                break;
+            }
+        }
+
+        //配送费用=基础配送费用*配送费件数系数*时段系数*繁忙系数
+        return amount.multiply(new BigDecimal(factor)).multiply(new BigDecimal(mc)).multiply(new BigDecimal(time));
+
+    }
+
+}

+ 198 - 7
src/main/java/com/izouma/dingdong/service/rider/RiderService.java

@@ -1,36 +1,117 @@
 package com.izouma.dingdong.service.rider;
 package com.izouma.dingdong.service.rider;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.MoneyRecord;
 import com.izouma.dingdong.domain.MoneyRecord;
+import com.izouma.dingdong.domain.OrderInfo;
+import com.izouma.dingdong.domain.OrderRefundApply;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.domain.User;
+import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.rider.Rider;
 import com.izouma.dingdong.domain.rider.Rider;
-import com.izouma.dingdong.enums.FinancialType;
+import com.izouma.dingdong.domain.rider.RiderSign;
+import com.izouma.dingdong.dto.RiderDTO;
+import com.izouma.dingdong.dto.RiderDistanceDTO;
+import com.izouma.dingdong.enums.*;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.MoneyRecordRepo;
 import com.izouma.dingdong.repo.MoneyRecordRepo;
+import com.izouma.dingdong.repo.OrderInfoRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
 import com.izouma.dingdong.repo.rider.RiderRepo;
+import com.izouma.dingdong.repo.rider.RiderSignRepo;
+import com.izouma.dingdong.service.OrderRefundApplyService;
+import com.izouma.dingdong.utils.MapUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.*;
 
 
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
 public class RiderService {
 public class RiderService {
 
 
-    private RiderRepo riderRepo;
-    private UserRepo userRepo;
-    private MoneyRecordRepo moneyRecordRepo;
+    private RiderRepo               riderRepo;
+    private UserRepo                userRepo;
+    private MoneyRecordRepo         moneyRecordRepo;
+    private OrderInfoRepo           orderInfoRepo;
+    private OrderRefundApplyService orderRefundApplyService;
+    private RiderSignRepo           riderSignRepo;
+
 
 
     /*
     /*
-    骑手签到
+    骑手注册
      */
      */
-    public void sign(Long riderId) {
+    public Rider riderApply(RiderDTO riderDTO) {
+        userRepo.findById(riderDTO.getUserId()).orElseThrow(new BusinessException("无用户"));
+        Rider rider = new Rider();
+        BeanUtil.copyProperties(rider, riderDTO);
+        rider.setBlacklist(false);
+        rider.setEnabled(true);
+        //rider.setSignIn(false);
+        rider.setStatus(ApplyStatus.PENDING);
+        return riderRepo.save(rider);
+    }
 
 
+    /*
+    骑手审核
+     */
+    public void riderAudit(Long riderId, Boolean pass) {
+        Rider rider = riderRepo.findById(riderId).orElseThrow(new BusinessException("无骑手"));
+        if (pass) {
+            rider.setStatus(ApplyStatus.PASS);
+            boolean i = true;
+            while (i) {
+                //随机生成骑手工号 一个首字母+四个数字
+                String jobNumber1 = RandomStringUtils.randomAlphabetic(1);
+                String jobNumber2 = RandomStringUtils.randomNumeric(4);
+                String jobNumber = jobNumber1 + jobNumber2;
+                Rider byJobNumber = riderRepo.findByJobNumber(jobNumber);
+                if (ObjectUtil.isNull(byJobNumber)) {
+                    rider.setJobNumber(jobNumber);
+                    i = false;
+                }
+            }
+        } else {
+            rider.setStatus(ApplyStatus.DENY);
+        }
+        riderRepo.save(rider);
     }
     }
 
 
+
     /*
     /*
-    骑手收入,且保存到记录表
+    骑手签到
+     */
+    public void sign(Long riderId, String password, Double longitude, Double latitude) {
+        Rider rider = riderRepo.findById(riderId).orElseThrow(new BusinessException("无骑手"));
+        Double distance = MapUtils.distance(longitude, latitude, rider.getLongitude(), rider.getLatitude());
+        if (distance > 3000) {
+            throw new BusinessException("不在工作区域");
+        }
+        User user = userRepo.findById(rider.getUserId()).orElseThrow(new BusinessException("无用户"));
+        boolean matches = new BCryptPasswordEncoder().matches(password, user.getPassword());
+        if (!matches) {
+            throw new BusinessException("密码不正确");
+        }
+        riderSignRepo.save(RiderSign.builder()
+                .latitude(latitude)
+                .longitude(longitude)
+                .riderId(riderId)
+                .signTime(LocalDateTime.now())
+                .build());
+    }
+
+    /**
+     * 骑手收入,且保存到记录表
+     *
+     * @param riderId    骑手ID
+     * @param fromUserId 来自用户
+     * @param amount     金额
+     * @param type       流水类型
+     * @param remark     备注
      */
      */
     public void income(Long riderId, Long fromUserId, BigDecimal amount, FinancialType type, String remark) {
     public void income(Long riderId, Long fromUserId, BigDecimal amount, FinancialType type, String remark) {
         //骑手应得  riderRepo.findUserIdById(riderId)
         //骑手应得  riderRepo.findUserIdById(riderId)
@@ -49,8 +130,118 @@ public class RiderService {
                 .fromUserId(fromUserId)
                 .fromUserId(fromUserId)
                 .userId(riderUser.getId())
                 .userId(riderUser.getId())
                 .time(LocalDateTime.now())
                 .time(LocalDateTime.now())
+                .remark(remark)
                 .enabled(true)
                 .enabled(true)
                 .build());
                 .build());
+    }
 
 
+
+    /*
+    骑手抢单形式接单
+    5分钟内手动抢单
+     */
+    public void riderReceiveOrder(Long riderId, Long orderId, Boolean pass) {
+        OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
+
+        if (pass) {
+            if (!OrderStatus.PAID.equals(orderInfo.getStatus())) {
+                throw new BusinessException("订单不可接单");
+            }
+            if (!MerchantStatus.RECEIVED.equals(orderInfo.getMerchantStatus())) {
+                throw new BusinessException("商家未接单");
+            }
+            if (!RiderStatus.NOT_RECEIVED.equals(orderInfo.getRiderStatus())) {
+                throw new BusinessException("已被其他骑手接单");
+            }
+
+            List<OrderInfo> infos = orderInfoRepo.findAllByRiderIdAndRiderStatusIsNot(riderId, RiderStatus.CARRY_OUT);
+            if (infos.size() >= 5) {
+                throw new BusinessException("未完成订单已达上线");
+            }
+            //设置订单状态
+            orderInfo.setRiderId(riderId);
+            orderInfo.setRiderStatus(RiderStatus.RECEIVED);
+//            orderInfo.setRiderOrderTime(LocalDateTime.now());
+            orderInfoRepo.save(orderInfo);
+        }
+    }
+
+    /*
+    系统派单
+    5分钟后自动接单
+        有空闲骑手离商家最近的距离排序,骑手不可拒单
+        无空闲,离商家最近的3个骑手,订单量少的接单
+        订单量相同,距离最近接单
+        商家3km内无骑手,取消订单
+     */
+    public void dispatch(Long orderId, List<RiderDistanceDTO> dtos) {
+        OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
+        Map<Long, Double> map = new HashMap<>();
+        dtos.forEach(d -> {
+            Merchant merchant = orderInfo.getMerchant();
+            Double distance = MapUtils.distance(merchant.getLongitude(), merchant.getLatitude(), d.getLongitude(), d.getLatitude());
+            map.put(d.getRiderId(), distance);
+        });
+
+        //无骑手,取消订单
+        if (CollUtil.isEmpty(map)) {
+//            orderInfoService.cancel(orderId, RefundReason.UNABLE_TO_DELIVER, null, null);
+            OrderRefundApply apply = orderRefundApplyService.apply(orderId, RefundReason.UNABLE_TO_DELIVER, null, null);
+            orderRefundApplyService.audit(apply.getId(), true, false);
+            return;
+        }
+
+        //排序
+        List<Map.Entry<Long, Double>> list = new ArrayList<>(map.entrySet());
+        list.sort(Comparator.comparing(Map.Entry<Long, Double>::getValue));
+
+        for (Map.Entry<Long, Double> m : list) {
+            Rider rider = riderRepo.findById(m.getKey()).orElseThrow(new BusinessException("无骑手"));
+            //if (rider.getSignIn()) {
+            List<OrderInfo> infos = orderInfoRepo.findAllByRiderIdAndRiderStatusIsNot(m.getKey(), RiderStatus.CARRY_OUT);
+            //有空闲骑手,自动接单,不可拒单
+            if (CollUtil.isEmpty(infos)) {
+                //riderId = m.getKey();
+                orderInfo.setRiderId(m.getKey());
+                orderInfo.setRiderStatus(RiderStatus.RECEIVED);
+                orderInfoRepo.save(orderInfo);
+                return;
+                //break;
+            }
+            //}
+        }
+
+        //无空闲骑手,未完成订单最少的接单
+        int infos1 = orderInfoRepo.findAllByRiderIdAndRiderStatusIsNot(list.get(0)
+                .getKey(), RiderStatus.CARRY_OUT).size();
+        int infos2 = orderInfoRepo.findAllByRiderIdAndRiderStatusIsNot(list.get(1)
+                .getKey(), RiderStatus.CARRY_OUT).size();
+        int infos3 = orderInfoRepo.findAllByRiderIdAndRiderStatusIsNot(list.get(2)
+                .getKey(), RiderStatus.CARRY_OUT).size();
+        Long riderId = null;
+        if (infos1 < infos2 && infos1 < infos3) {
+            riderId = list.get(0).getKey();
+        } else if (infos2 < infos1 && infos2 < infos3) {
+            riderId = list.get(1).getKey();
+        } else if (infos3 < infos1 && infos3 < infos2) {
+            riderId = list.get(2).getKey();
+        }
+        if (riderId != null) {
+            orderInfo.setRiderId(riderId);
+            orderInfo.setRiderStatus(RiderStatus.RECEIVED);
+            orderInfoRepo.save(orderInfo);
+            return;
+        }
+
+        //无空闲骑手 距离最近的接单
+        if (RiderStatus.NOT_RECEIVED.equals(orderInfo.getRiderStatus())) {
+            riderId = list.get(0).getKey();
+            orderInfo.setRiderId(riderId);
+            orderInfo.setRiderStatus(RiderStatus.RECEIVED);
+        }
+
+        orderInfoRepo.save(orderInfo);
     }
     }
+
+
 }
 }

+ 14 - 0
src/main/java/com/izouma/dingdong/service/rider/RiderSignService.java

@@ -0,0 +1,14 @@
+package com.izouma.dingdong.service.rider;
+
+import com.izouma.dingdong.domain.rider.RiderSign;
+import com.izouma.dingdong.repo.rider.RiderSignRepo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class RiderSignService {
+
+    private RiderSignRepo riderSignRepo;
+
+}

+ 0 - 1
src/main/java/com/izouma/dingdong/service/user/AddressService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.user;
 package com.izouma.dingdong.service.user;
 
 
-import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.repo.user.AddressRepo;
 import com.izouma.dingdong.repo.user.AddressRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/user/FeedbackService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.user;
 package com.izouma.dingdong.service.user;
 
 
-import com.izouma.dingdong.domain.user.Feedback;
 import com.izouma.dingdong.repo.user.FeedbackRepo;
 import com.izouma.dingdong.repo.user.FeedbackRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 0 - 1
src/main/java/com/izouma/dingdong/service/user/MyCollectionService.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.service.user;
 package com.izouma.dingdong.service.user;
 
 
-import com.izouma.dingdong.domain.user.MyCollection;
 import com.izouma.dingdong.repo.user.MyCollectionRepo;
 import com.izouma.dingdong.repo.user.MyCollectionRepo;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 27 - 148
src/main/java/com/izouma/dingdong/service/user/ShoppingCartService.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.OrderGoodsSpec;
 import com.izouma.dingdong.domain.OrderGoodsSpec;
 import com.izouma.dingdong.domain.OrderInfo;
 import com.izouma.dingdong.domain.OrderInfo;
+import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.user.ShoppingCart;
 import com.izouma.dingdong.domain.user.ShoppingCart;
 import com.izouma.dingdong.domain.merchant.FullReduction;
 import com.izouma.dingdong.domain.merchant.FullReduction;
 import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.domain.merchant.Goods;
@@ -12,165 +13,34 @@ import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
 import com.izouma.dingdong.repo.OrderGoodsSpecRepo;
 import com.izouma.dingdong.repo.OrderInfoRepo;
 import com.izouma.dingdong.repo.OrderInfoRepo;
+import com.izouma.dingdong.repo.merchant.MerchantRepo;
 import com.izouma.dingdong.repo.user.ShoppingCartRepo;
 import com.izouma.dingdong.repo.user.ShoppingCartRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.merchant.FullReductionRepo;
 import com.izouma.dingdong.repo.merchant.FullReductionRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.GoodsRepo;
 import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
 import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
-import com.izouma.dingdong.service.OrderGoodsSpecService;
-import com.izouma.dingdong.service.merchant.GoodsService;
+import com.izouma.dingdong.service.rider.DeliveryFeeService;
+import com.izouma.dingdong.utils.MapUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import javax.persistence.Column;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.Comparator;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
 import java.util.List;
-import java.util.Map;
 
 
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
 public class ShoppingCartService {
 public class ShoppingCartService {
 
 
-    private ShoppingCartRepo      shoppingCartRepo;
-    private GoodsRepo             goodsRepo;
-    private UserRepo              userRepo;
-    private OrderInfoRepo         orderInfoRepo;
-    private MerchantSettingsRepo  merchantSettingsRepo;
-    private FullReductionRepo     fullReductionRepo;
-    private OrderGoodsSpecRepo    orderGoodsSpecRepo;
-    private OrderGoodsSpecService orderGoodsSpecService;
-
-    /*
-    创建购物车
-     */
-    public ShoppingCart save(Long userId, OrderGoodsSpec orderGoodsSpec) {
-        Goods goods = goodsRepo.findById(orderGoodsSpec.getGoodsId()).orElseThrow(new BusinessException("无商品"));
-
-        //查看商品库存是否足够
-        //Goods goods = goodsService.buy(orderGoodsSpec.getGoodsId(), orderGoodsSpec.getNum());
-
-        //按商家创建购物车
-        Long merchantId = goods.getMerchantId();
-
-        //商家信息
-        MerchantSettings merchant = merchantSettingsRepo.findByMerchantId(merchantId)
-                .orElseThrow(new BusinessException("无商户"));
-
-        //查找是不是第一次购买
-        userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
-
-        //购物车中是否已有
-        ShoppingCart shoppingCart = shoppingCartRepo.findByUserIdAndMerchantId(userId, merchantId);
-
-        //加规格
-        List<OrderGoodsSpec> specs = CollUtil.newArrayList();
-        specs.add(orderGoodsSpec);
-
-        //减的金额
-        BigDecimal sub = orderGoodsSpec.getGoodsPrice()
-                .subtract(orderGoodsSpec.getGoodsRealPrice())
-                .multiply(BigDecimal.valueOf(orderGoodsSpec.getNum()));
-
-        //包装费
-        BigDecimal packingPrice = BigDecimal.ZERO;
-
-        if (ObjectUtil.isNotNull(goods.getPackingPrice())) {
-            packingPrice = goods.getPackingPrice().multiply(BigDecimal.valueOf(orderGoodsSpec.getNum()));
-        }
-
-        if (ObjectUtil.isNull(shoppingCart)) {
-            shoppingCart = ShoppingCart.builder()
-                    .merchantId(goods.getMerchantId())
-                    .userId(userId)
-                    .goodsTotal(orderGoodsSpec.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoodsSpec.getNum())))
-                    .reducedAmount(sub)
-                    .orderGoodsSpecs(specs)
-                    .packingPrice(packingPrice)
-                    .fullReduction(BigDecimal.ZERO)
-                    .firstBuy(merchant.getFirstOrder())
-                    .enabled(true)
-                    .build();
-            shoppingCart.setId(-1L);
-        } else {
-            //商品总价(原价)
-            shoppingCart.setGoodsTotal(shoppingCart.getGoodsTotal()
-                    .add(orderGoodsSpec.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoodsSpec.getNum()))));
-            //折扣的差价
-            shoppingCart.setReducedAmount(shoppingCart.getReducedAmount().add(sub));
-            specs.addAll(shoppingCart.getOrderGoodsSpecs());
-            shoppingCart.setOrderGoodsSpecs(specs);
-            //包装费
-            shoppingCart.setPackingPrice(shoppingCart.getPackingPrice().add(packingPrice));
-        }
-
-        //查找是不是第一次购买
-        List<OrderInfo> userOrders = orderInfoRepo.findAllByUserId(userId);
-        List<OrderInfo> userOrdersMerchant = orderInfoRepo.findAllByUserIdAndMerchantId(userId, merchantId);
-        //是新用户也是首单
-        if (CollUtil.isEmpty(userOrders)) {
-//            shoppingCart.setNewUser(merchant.getNewUser());
-            shoppingCart.setFirstBuy(merchant.getFirstOrder());
-        } else {
-            //首单
-            if (CollUtil.isEmpty(userOrdersMerchant)) {
-                //shoppingCart.setNewUser(BigDecimal.ZERO);
-                shoppingCart.setFirstBuy(merchant.getFirstOrder());
-            } else {
-                //非首单设置为0
-                //shoppingCart.setNewUser(BigDecimal.ZERO);
-                shoppingCart.setFirstBuy(BigDecimal.ZERO);
-            }
-        }
-
-
-        //获取配送费
-        shoppingCart.setDeliveryAmount(BigDecimal.TEN);
-
-
-        boolean flag = true;
-        //满减
-        if (!goods.getIsFullReduction()) {
-            flag = false;
-        }
-        if (flag) {
-            //参与满减
-            List<FullReduction> fullReductions = fullReductionRepo.findAllByMerchantId(merchantId);
-            fullReductions.sort(Comparator.comparing(FullReduction::getFullAmount));
-            for (FullReduction f : fullReductions) {
-                if (f.getFullAmount().compareTo(shoppingCart.getGoodsTotal()) <= 0) {
-                    shoppingCart.setFullReduction(f.getMinusAmount());
-                    //不是折扣是满减,就置为减去的金额
-                    shoppingCart.setReducedAmount(f.getMinusAmount());
-                }
-            }
-        }
-
-        //商品总价+配送费+包装费
-        BigDecimal total = shoppingCart.getGoodsTotal()
-                .add(shoppingCart.getDeliveryAmount())
-                .add(shoppingCart.getPackingPrice());
-
-        //需要减去的金额=首单+新用户+折扣/满减
-        BigDecimal sub2 = shoppingCart.getReducedAmount();
-        if (ObjectUtil.isNotNull(shoppingCart.getFirstBuy())) {
-            sub2 = sub2.add(shoppingCart.getFirstBuy());
-        }
-
-        //总价-首单-新用户-满减
-        BigDecimal real = total.subtract(sub2);
-
-        shoppingCart.setRealAmount(real);
-        shoppingCart.setReducedAmount(sub2);
-
-        ShoppingCart cart = shoppingCartRepo.save(shoppingCart);
-
-        this.changeOrderSpec(cart, orderGoodsSpec);
-
-        return cart;
-    }
-
+    private ShoppingCartRepo     shoppingCartRepo;
+    private GoodsRepo            goodsRepo;
+    private UserRepo             userRepo;
+    private OrderInfoRepo        orderInfoRepo;
+    private MerchantSettingsRepo merchantSettingsRepo;
+    private FullReductionRepo    fullReductionRepo;
+    private OrderGoodsSpecRepo   orderGoodsSpecRepo;
+    private DeliveryFeeService   deliveryFeeService;
+    private MerchantRepo         merchantRepo;
 
 
     //改订单规格
     //改订单规格
     public void changeOrderSpec(ShoppingCart cart, OrderGoodsSpec orderGoodsSpec) {
     public void changeOrderSpec(ShoppingCart cart, OrderGoodsSpec orderGoodsSpec) {
@@ -281,7 +151,7 @@ public class ShoppingCartService {
 //        }
 //        }
 
 
         //获取配送费
         //获取配送费
-        cart.setDeliveryAmount(BigDecimal.TEN);
+        //cart.setDeliveryAmount(BigDecimal.TEN);
 
 
         //需要减去的金额=首单+折扣/满减
         //需要减去的金额=首单+折扣/满减
         BigDecimal sub2 = cart.getReducedAmount();
         BigDecimal sub2 = cart.getReducedAmount();
@@ -298,14 +168,19 @@ public class ShoppingCartService {
     }
     }
 
 
     //加规格
     //加规格
-    public ShoppingCart add(Long userId, OrderGoodsSpec orderGoodsSpec) {
+    public ShoppingCart add(Long userId, OrderGoodsSpec orderGoodsSpec, Double longitude, Double latitude) {
         //按商家创建购物车
         //按商家创建购物车
         Long merchantId = goodsRepo.findById(orderGoodsSpec.getGoodsId())
         Long merchantId = goodsRepo.findById(orderGoodsSpec.getGoodsId())
                 .orElseThrow(new BusinessException("无商品"))
                 .orElseThrow(new BusinessException("无商品"))
                 .getMerchantId();
                 .getMerchantId();
 
 
         //商家信息
         //商家信息
-        //MerchantSettings merchant = merchantSettingsRepo.findByMerchantId(merchantId).orElseThrow(new BusinessException("无商户"));
+        Merchant merchant = merchantRepo.findById(merchantId).orElseThrow(new BusinessException("无商户"));
+        //判断是否配送距离内
+        Double distance = MapUtils.distance(longitude, latitude, merchant.getLongitude(), merchant.getLatitude());
+        if (distance > 3000) {
+            throw new BusinessException("超出配送范围");
+        }
 
 
         //查找是不是第一次购买
         //查找是不是第一次购买
         userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
         userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
@@ -335,6 +210,10 @@ public class ShoppingCartService {
             shoppingCart.setOrderGoodsSpecs(specs);
             shoppingCart.setOrderGoodsSpecs(specs);
         }
         }
 
 
+        //配送费计算
+        BigDecimal deliveryFee = deliveryFeeService.deliveryFee(merchantId, specs, longitude, latitude);
+        shoppingCart.setDeliveryAmount(deliveryFee);
+
         ShoppingCart save = shoppingCartRepo.save(shoppingCart);
         ShoppingCart save = shoppingCartRepo.save(shoppingCart);
 
 
         this.changeOrderSpec(save, orderGoodsSpec);
         this.changeOrderSpec(save, orderGoodsSpec);
@@ -355,7 +234,7 @@ public class ShoppingCartService {
     /*
     /*
     再来一单
     再来一单
      */
      */
-    public ShoppingCart again(Long orderId) {
+    public ShoppingCart again(Long orderId, Double longitude, Double latitude) {
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
         List<OrderGoodsSpec> orderGoodsSpecs = orderInfo.getOrderGoodsSpecs();
         List<OrderGoodsSpec> orderGoodsSpecs = orderInfo.getOrderGoodsSpecs();
         Long userId = orderInfo.getUserId();
         Long userId = orderInfo.getUserId();
@@ -368,7 +247,7 @@ public class ShoppingCartService {
             spec.setShoppingCartId(null);
             spec.setShoppingCartId(null);
             spec.setId(null);
             spec.setId(null);
             orderGoodsSpecRepo.save(spec);
             orderGoodsSpecRepo.save(spec);
-            cart = this.add(userId, spec);
+            cart = this.add(userId, spec, longitude, latitude);
         }
         }
         return cart;
         return cart;
     }
     }

+ 4 - 4
src/main/java/com/izouma/dingdong/web/AuthenticationController.java

@@ -35,9 +35,9 @@ import java.util.Objects;
 @RequestMapping("/auth")
 @RequestMapping("/auth")
 public class AuthenticationController {
 public class AuthenticationController {
     private AuthenticationManager authenticationManager;
     private AuthenticationManager authenticationManager;
-    private JwtTokenUtil jwtTokenUtil;
+    private JwtTokenUtil          jwtTokenUtil;
     private JwtUserDetailsService userDetailsService;
     private JwtUserDetailsService userDetailsService;
-    private UserService userService;
+    private UserService           userService;
 
 
     private MerchantService merchantService;
     private MerchantService merchantService;
 
 
@@ -106,9 +106,9 @@ public class AuthenticationController {
 
 
     @PostMapping("/loginByRegister")
     @PostMapping("/loginByRegister")
     @ApiOperation("注册登录")
     @ApiOperation("注册登录")
-    public String loginByRegister(String phone, String password) {
+    public String loginByRegister(String phone, String password,Identity identity) {
         try {
         try {
-            User user = userService.register(phone, password, Identity.USER);
+            User user = userService.register(phone, password, identity);
             return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
             return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
         } catch (Exception e) {
         } catch (Exception e) {
             log.error("loginByRegister", e);
             log.error("loginByRegister", e);

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

@@ -1,8 +1,12 @@
 package com.izouma.dingdong.web;
 package com.izouma.dingdong.web;
 
 
+import cn.hutool.core.util.StrUtil;
 import com.izouma.dingdong.domain.OrderInfo;
 import com.izouma.dingdong.domain.OrderInfo;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.dto.UserOrderDTO;
 import com.izouma.dingdong.dto.UserOrderDTO;
+import com.izouma.dingdong.enums.Identity;
+import com.izouma.dingdong.enums.MerchantStatus;
+import com.izouma.dingdong.enums.OrderStatus;
 import com.izouma.dingdong.enums.RefundReason;
 import com.izouma.dingdong.enums.RefundReason;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.repo.UserRepo;
 import com.izouma.dingdong.service.OrderInfoService;
 import com.izouma.dingdong.service.OrderInfoService;
@@ -18,9 +22,11 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -29,9 +35,9 @@ import java.util.Map;
 @AllArgsConstructor
 @AllArgsConstructor
 public class OrderInfoController extends BaseController {
 public class OrderInfoController extends BaseController {
     private OrderInfoService orderInfoService;
     private OrderInfoService orderInfoService;
-    private OrderInfoRepo orderInfoRepo;
-    private UserRepo userRepo;
-    private MerchantService merchantService;
+    private OrderInfoRepo    orderInfoRepo;
+    private UserRepo         userRepo;
+    private MerchantService  merchantService;
 
 
 
 
     //@PreAuthorize("hasRole('ADMIN')")
     //@PreAuthorize("hasRole('ADMIN')")
@@ -118,7 +124,7 @@ public class OrderInfoController extends BaseController {
     @PostMapping("/riderStatus")
     @PostMapping("/riderStatus")
     @ApiOperation("骑手改变状态")
     @ApiOperation("骑手改变状态")
     public void riderStatus(Long orderId, Boolean pass) {
     public void riderStatus(Long orderId, Boolean pass) {
-        orderInfoService.carryOut(orderId, pass);
+//        orderInfoService.riderCarryOut(orderId, pass);
     }
     }
 
 
     @GetMapping("/allAmount")
     @GetMapping("/allAmount")
@@ -130,11 +136,31 @@ public class OrderInfoController extends BaseController {
 
 
     @GetMapping("/cancelOrder")
     @GetMapping("/cancelOrder")
     @ApiOperation("取消订单")
     @ApiOperation("取消订单")
-    public OrderInfo cancel(Long id, RefundReason reason) {
-        return orderInfoService.cancel(id, reason);
+    public OrderInfo cancel(Long id, RefundReason reason, String remark, String img) {
+        //如果是骑手取消
+        if (Identity.RIDER.equals(SecurityUtils.getAuthenticatedUser().getIdentity())) {
+            if (StrUtil.isEmpty(img)) {
+                throw new BusinessException("无联系信息截图");
+            }
+        }
+
+        //订单id  理由  备注  图片
+        return orderInfoService.cancel(id, reason, remark, img);
     }
     }
 
 
     //@GetMapping("/cancelCancelOrder")
     //@GetMapping("/cancelCancelOrder")
 
 
+    @GetMapping("/missedOrder")
+    @ApiOperation("骑手端,五分钟内未接单的订单")
+    public List<OrderInfo> missedOrder() {
+        return orderInfoRepo.findAllByStatusAndOrderTimeAfterAndMerchantStatus(OrderStatus.PAID, LocalDateTime.now()
+                .plusMinutes(5), MerchantStatus.RECEIVED);
+    }
+
+    @GetMapping("/riderReceived")
+    @ApiOperation("骑手端,未接单的订单")
+    public List<OrderInfo> riderReceived() {
+        return orderInfoRepo.findAllByStatusAndMerchantStatus(OrderStatus.PAID, MerchantStatus.RECEIVED);
+    }
 }
 }
 
 

+ 7 - 5
src/main/java/com/izouma/dingdong/web/OrderRefundApplyController.java

@@ -38,7 +38,8 @@ public class OrderRefundApplyController extends BaseController {
     @PostMapping("/save")
     @PostMapping("/save")
     public OrderRefundApply save(@RequestBody OrderRefundApply record) {
     public OrderRefundApply save(@RequestBody OrderRefundApply record) {
         if (record.getId() != null) {
         if (record.getId() != null) {
-            OrderRefundApply orig = orderRefundApplyRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            OrderRefundApply orig = orderRefundApplyRepo.findById(record.getId())
+                    .orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
             ObjUtils.merge(orig, record);
             return orderRefundApplyRepo.save(orig);
             return orderRefundApplyRepo.save(orig);
         }
         }
@@ -72,8 +73,8 @@ public class OrderRefundApplyController extends BaseController {
 
 
     @GetMapping("/apply")
     @GetMapping("/apply")
     @ApiOperation("申请退款")
     @ApiOperation("申请退款")
-    public void apply(@RequestParam Long orderId, RefundReason reason, String remark) {
-        orderRefundApplyService.apply(orderId, reason, remark);
+    public void apply(@RequestParam Long orderId, RefundReason reason, String remark, String img) {
+        orderRefundApplyService.apply(orderId, reason, remark, img);
     }
     }
 
 
     @ApiOperation("商家是否同意退款")
     @ApiOperation("商家是否同意退款")
@@ -93,7 +94,8 @@ public class OrderRefundApplyController extends BaseController {
     @GetMapping("/merchant")
     @GetMapping("/merchant")
     @ApiOperation("商家退款订单")
     @ApiOperation("商家退款订单")
     public List<OrderRefundApply> cancel() {
     public List<OrderRefundApply> cancel() {
-        return orderRefundApplyRepo.findAllByMerchantId(merchantService.findMerchantId(SecurityUtils.getAuthenticatedUser().getId()));
+        return orderRefundApplyRepo.findAllByMerchantId(merchantService.findMerchantId(SecurityUtils.getAuthenticatedUser()
+                .getId()));
     }
     }
 
 
     @ApiOperation("平台是否同意退款")
     @ApiOperation("平台是否同意退款")
@@ -104,7 +106,7 @@ public class OrderRefundApplyController extends BaseController {
 
 
     @ApiOperation("已打款")
     @ApiOperation("已打款")
     @GetMapping("/payment")
     @GetMapping("/payment")
-    public void payment(@RequestParam Long id){
+    public void payment(@RequestParam Long id) {
         orderRefundApplyService.payment(id);
         orderRefundApplyService.payment(id);
     }
     }
 }
 }

+ 0 - 6
src/main/java/com/izouma/dingdong/web/backstage/CategoryController.java

@@ -1,7 +1,6 @@
 package com.izouma.dingdong.web.backstage;
 package com.izouma.dingdong.web.backstage;
 
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.izouma.dingdong.dto.CategoryDTO;
 import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.backstage.Category;
@@ -66,11 +65,6 @@ public class CategoryController extends BaseController {
         ExcelUtils.export(response, data);
         ExcelUtils.export(response, data);
     }
     }
 
 
-    @PostMapping("/saveCategory")
-    public CategoryDTO saveCategory(CategoryDTO dto) {
-        return null;
-    }
-
     @GetMapping("/tree")
     @GetMapping("/tree")
     public List<Category> tree(Long id) {
     public List<Category> tree(Long id) {
         return categoryRepo.findAllByParent(id);
         return categoryRepo.findAllByParent(id);

+ 1 - 1
src/main/java/com/izouma/dingdong/web/backstage/ComplaintController.java

@@ -70,7 +70,7 @@ public class ComplaintController extends BaseController {
     @GetMapping("/refund")
     @GetMapping("/refund")
     public void refund(Long id, BigDecimal merchantLiability, BigDecimal riderLiability, String remark) {
     public void refund(Long id, BigDecimal merchantLiability, BigDecimal riderLiability, String remark) {
         Complaint complaint = complaintRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         Complaint complaint = complaintRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-        OrderRefundApply apply = orderRefundApplyService.apply(complaint.getOrderId(), RefundReason.USER_COMPLAINTS, remark);
+        OrderRefundApply apply = orderRefundApplyService.apply(complaint.getOrderId(), RefundReason.USER_COMPLAINTS, remark,null);
         orderRefundApplyService.audit(apply.getId(), false, false);
         orderRefundApplyService.audit(apply.getId(), false, false);
         orderRefundApplyService.platformAudit(apply.getId(), true, merchantLiability, riderLiability, true);
         orderRefundApplyService.platformAudit(apply.getId(), true, merchantLiability, riderLiability, true);
         complaint.setSolution(Solution.REFUND);
         complaint.setSolution(Solution.REFUND);

+ 1 - 0
src/main/java/com/izouma/dingdong/web/merchant/GoodsController.java

@@ -120,6 +120,7 @@ public class GoodsController extends BaseController {
     }
     }
 
 
     @GetMapping("/goods")
     @GetMapping("/goods")
+    @ApiOperation("/客户端下的商家内的商品列表")
     public List<Goods> goods(Long merchantId) {
     public List<Goods> goods(Long merchantId) {
         return goodsRepo.findAllByMerchantIdAndStatus(merchantId, ApplyStatus.PASS);
         return goodsRepo.findAllByMerchantIdAndStatus(merchantId, ApplyStatus.PASS);
     }
     }

+ 0 - 1
src/main/java/com/izouma/dingdong/web/merchant/MerchantSettingsController.java

@@ -16,7 +16,6 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;

+ 4 - 4
src/main/java/com/izouma/dingdong/web/backstage/DeliveryFeeController.java → src/main/java/com/izouma/dingdong/web/rider/DeliveryFeeController.java

@@ -1,11 +1,11 @@
-package com.izouma.dingdong.web.backstage;
+package com.izouma.dingdong.web.rider;
 
 
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.web.BaseController;
-import com.izouma.dingdong.domain.backstage.DeliveryFee;
-import com.izouma.dingdong.service.backstage.DeliveryFeeService;
+import com.izouma.dingdong.domain.rider.DeliveryFee;
+import com.izouma.dingdong.service.rider.DeliveryFeeService;
 import com.izouma.dingdong.dto.PageQuery;
 import com.izouma.dingdong.dto.PageQuery;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.exception.BusinessException;
-import com.izouma.dingdong.repo.backstage.DeliveryFeeRepo;
+import com.izouma.dingdong.repo.rider.DeliveryFeeRepo;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 
 

+ 63 - 0
src/main/java/com/izouma/dingdong/web/rider/RiderSignController.java

@@ -0,0 +1,63 @@
+package com.izouma.dingdong.web.rider;
+
+import com.izouma.dingdong.web.BaseController;
+import com.izouma.dingdong.domain.rider.RiderSign;
+import com.izouma.dingdong.service.rider.RiderSignService;
+import com.izouma.dingdong.dto.PageQuery;
+import com.izouma.dingdong.exception.BusinessException;
+import com.izouma.dingdong.repo.rider.RiderSignRepo;
+import com.izouma.dingdong.utils.ObjUtils;
+import com.izouma.dingdong.utils.excel.ExcelUtils;
+
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@RequestMapping("/riderSign")
+@AllArgsConstructor
+public class RiderSignController extends BaseController {
+    private RiderSignService riderSignService;
+    private RiderSignRepo riderSignRepo;
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    public RiderSign save(@RequestBody RiderSign record) {
+        if (record.getId() != null) {
+            RiderSign orig = riderSignRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return riderSignRepo.save(orig);
+        }
+        return riderSignRepo.save(record);
+    }
+
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @GetMapping("/all")
+    public Page<RiderSign> all(PageQuery pageQuery) {
+        return riderSignRepo.findAll(toSpecification(pageQuery,RiderSign.class), toPageRequest(pageQuery));
+    }
+
+    @GetMapping("/get/{id}")
+    public RiderSign get(@PathVariable Long id) {
+        return riderSignRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        riderSignRepo.deleteById(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<RiderSign> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+}
+

+ 8 - 0
src/main/java/com/izouma/dingdong/web/user/AddressController.java

@@ -1,5 +1,6 @@
 package com.izouma.dingdong.web.user;
 package com.izouma.dingdong.web.user;
 
 
+import com.izouma.dingdong.utils.SecurityUtils;
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.domain.user.Address;
 import com.izouma.dingdong.service.user.AddressService;
 import com.izouma.dingdong.service.user.AddressService;
@@ -9,6 +10,7 @@ import com.izouma.dingdong.repo.user.AddressRepo;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 
 
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -64,5 +66,11 @@ public class AddressController extends BaseController {
         List<Address> data = all(pageQuery).getContent();
         List<Address> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
         ExcelUtils.export(response, data);
     }
     }
+
+    @GetMapping("/my")
+    @ApiOperation("用户地址列表")
+    public List<Address> my(){
+        return  addressRepo.findAllByUserIdAndEnabledTrue(SecurityUtils.getAuthenticatedUser().getId());
+    }
 }
 }
 
 

+ 10 - 8
src/main/java/com/izouma/dingdong/web/user/ShoppingCartController.java

@@ -33,10 +33,10 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 @AllArgsConstructor
 public class ShoppingCartController extends BaseController {
 public class ShoppingCartController extends BaseController {
 
 
-    private ShoppingCartService shoppingCartService;
-    private ShoppingCartRepo shoppingCartRepo;
+    private ShoppingCartService   shoppingCartService;
+    private ShoppingCartRepo      shoppingCartRepo;
     private OrderGoodsSpecService orderGoodsSpecService;
     private OrderGoodsSpecService orderGoodsSpecService;
-    private OrderGoodsSpecRepo orderGoodsSpecRepo;
+    private OrderGoodsSpecRepo    orderGoodsSpecRepo;
 
 
     //@PreAuthorize("hasRole('ADMIN')")
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     @PostMapping("/save")
@@ -83,10 +83,11 @@ public class ShoppingCartController extends BaseController {
      */
      */
     @PostMapping("/cart")
     @PostMapping("/cart")
     @ApiOperation("选择规格后就加入购物车")
     @ApiOperation("选择规格后就加入购物车")
-    public ShoppingCart cart(Long goodsId, String goodsSpecificationIds, Integer num) {
+    public ShoppingCart cart(Long goodsId, String goodsSpecificationIds, Integer num, Double longitude, Double latitude) {
         //无规格时,goodsSpecifications可不填
         //无规格时,goodsSpecifications可不填
         OrderGoodsSpec orderGoodsSpec = orderGoodsSpecService.add(goodsId, goodsSpecificationIds, num);
         OrderGoodsSpec orderGoodsSpec = orderGoodsSpecService.add(goodsId, goodsSpecificationIds, num);
-        return shoppingCartService.add(SecurityUtils.getAuthenticatedUser().getId(), orderGoodsSpec);
+        return shoppingCartService.add(SecurityUtils.getAuthenticatedUser()
+                .getId(), orderGoodsSpec, longitude, latitude);
     }
     }
 
 
     @GetMapping("/delGoods")
     @GetMapping("/delGoods")
@@ -104,7 +105,8 @@ public class ShoppingCartController extends BaseController {
 
 
     @GetMapping("/my/merchant")
     @GetMapping("/my/merchant")
     public List<OrderGoodsSpec> myMerchant(Long merchantId) {
     public List<OrderGoodsSpec> myMerchant(Long merchantId) {
-        ShoppingCart cart = shoppingCartRepo.findByUserIdAndMerchantId(SecurityUtils.getAuthenticatedUser().getId(), merchantId);
+        ShoppingCart cart = shoppingCartRepo.findByUserIdAndMerchantId(SecurityUtils.getAuthenticatedUser()
+                .getId(), merchantId);
         if (ObjectUtil.isEmpty(cart)) {
         if (ObjectUtil.isEmpty(cart)) {
             return null;
             return null;
         }
         }
@@ -128,8 +130,8 @@ public class ShoppingCartController extends BaseController {
 
 
     @GetMapping("/again")
     @GetMapping("/again")
     @ApiOperation("再来一单")
     @ApiOperation("再来一单")
-    public ShoppingCart again(Long orderId) {
-        return shoppingCartService.again(orderId);
+    public ShoppingCart again(Long orderId, Double longitude, Double latitude) {
+        return shoppingCartService.again(orderId, longitude, latitude);
     }
     }
 
 
     @GetMapping("/changeNum")
     @GetMapping("/changeNum")

+ 1 - 0
src/main/resources/genjson/RiderSign.json

@@ -0,0 +1 @@
+{"tableName":"RiderSign","className":"RiderSign","remark":"骑手签到","genTable":true,"genClass":true,"genList":true,"genForm":true,"genRouter":true,"javaPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/java/com/izouma/dingdong","viewPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src/views","routerPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src","resourcesPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/resources","dataBaseType":"Mysql","fields":[{"name":"riderId","modelName":"riderId","remark":"骑手Id","showInList":true,"showInForm":true,"formType":"number"},{"name":"signTime","modelName":"signTime","remark":"签到时间","showInList":true,"showInForm":true,"formType":"datetime"},{"name":"longitude","modelName":"longitude","remark":"经度","showInList":true,"showInForm":true,"formType":"number"},{"name":"latitude","modelName":"latitude","remark":"纬度","showInList":true,"showInForm":true,"formType":"number"}],"readTable":false,"dataSourceCode":"dataSource","genJson":"","subtables":[],"update":false,"basePackage":"com.izouma.dingdong","tablePackage":"com.izouma.dingdong.domain.rider.RiderSign","genPackage":"rider"}

+ 36 - 20
src/main/vue/src/router.js

@@ -98,7 +98,7 @@ const router = new Router({
                 {
                 {
                     path: '/salesEdit',
                     path: '/salesEdit',
                     name: 'SalesEdit',
                     name: 'SalesEdit',
-                    component: () => import(/* webpackChunkName: "salesEdit" */ '@/views/SalesEdit.vue'),
+                    component: () => import(/* webpackChunkName: "salesEdit" */ '@/views/merchant/SalesEdit.vue'),
                     meta: {
                     meta: {
                        title: '商品每日销售编辑',
                        title: '商品每日销售编辑',
                     },
                     },
@@ -106,7 +106,7 @@ const router = new Router({
                 {
                 {
                     path: '/salesList',
                     path: '/salesList',
                     name: 'SalesList',
                     name: 'SalesList',
-                    component: () => import(/* webpackChunkName: "salesList" */ '@/views/SalesList.vue'),
+                    component: () => import(/* webpackChunkName: "salesList" */ '@/views/merchant/SalesList.vue'),
                     meta: {
                     meta: {
                        title: '商品每日销售',
                        title: '商品每日销售',
                     },
                     },
@@ -114,7 +114,7 @@ const router = new Router({
                 {
                 {
                     path: '/categoryEdit',
                     path: '/categoryEdit',
                     name: 'CategoryEdit',
                     name: 'CategoryEdit',
-                    component: () => import(/* webpackChunkName: "categoryEdit" */ '@/views/CategoryEdit.vue'),
+                    component: () => import(/* webpackChunkName: "categoryEdit" */ '@/views/merchant/CategoryEdit.vue'),
                     meta: {
                     meta: {
                        title: '类别编辑',
                        title: '类别编辑',
                     },
                     },
@@ -122,14 +122,14 @@ const router = new Router({
                 {
                 {
                     path: '/categoryList',
                     path: '/categoryList',
                     name: 'CategoryList',
                     name: 'CategoryList',
-                    component: () => import(/* webpackChunkName: "categoryList" */ '@/views/CategoryList.vue'),
+                    component: () => import(/* webpackChunkName: "categoryList" */ '@/views/merchant/CategoryList.vue'),
                     meta: {
                     meta: {
                        title: '类别',
                        title: '类别',
                     },
                     },
                },
                },
                 {
                 {
-                    path: '/cateEdit',
-                    name: 'cateEdit',
+                    path: '/tagEdit',
+                    name: 'TagEdit',
                     component: () => import(/* webpackChunkName: "tagEdit" */ '@/views/TagEdit.vue'),
                     component: () => import(/* webpackChunkName: "tagEdit" */ '@/views/TagEdit.vue'),
                     meta: {
                     meta: {
                        title: '标签编辑',
                        title: '标签编辑',
@@ -258,7 +258,7 @@ const router = new Router({
                 {
                 {
                     path: '/shoppingCartEdit',
                     path: '/shoppingCartEdit',
                     name: 'ShoppingCartEdit',
                     name: 'ShoppingCartEdit',
-                    component: () => import(/* webpackChunkName: "shoppingCartEdit" */ '@/views/ShoppingCartEdit.vue'),
+                    component: () => import(/* webpackChunkName: "shoppingCartEdit" */ '@/views/user/ShoppingCartEdit.vue'),
                     meta: {
                     meta: {
                        title: '购物车编辑',
                        title: '购物车编辑',
                     },
                     },
@@ -266,7 +266,7 @@ const router = new Router({
                 {
                 {
                     path: '/shoppingCartList',
                     path: '/shoppingCartList',
                     name: 'ShoppingCartList',
                     name: 'ShoppingCartList',
-                    component: () => import(/* webpackChunkName: "shoppingCartList" */ '@/views/ShoppingCartList.vue'),
+                    component: () => import(/* webpackChunkName: "shoppingCartList" */ '@/views/user/ShoppingCartList.vue'),
                     meta: {
                     meta: {
                        title: '购物车',
                        title: '购物车',
                     },
                     },
@@ -274,7 +274,7 @@ const router = new Router({
                 {
                 {
                     path: '/merchantNatureEdit',
                     path: '/merchantNatureEdit',
                     name: 'MerchantNatureEdit',
                     name: 'MerchantNatureEdit',
-                    component: () => import(/* webpackChunkName: "merchantNatureEdit" */ '@/views/MerchantNatureEdit.vue'),
+                    component: () => import(/* webpackChunkName: "merchantNatureEdit" */ '@/views/merchant/MerchantNatureEdit.vue'),
                     meta: {
                     meta: {
                        title: '商家性质编辑',
                        title: '商家性质编辑',
                     },
                     },
@@ -282,7 +282,7 @@ const router = new Router({
                 {
                 {
                     path: '/merchantNatureList',
                     path: '/merchantNatureList',
                     name: 'MerchantNatureList',
                     name: 'MerchantNatureList',
-                    component: () => import(/* webpackChunkName: "merchantNatureList" */ '@/views/MerchantNatureList.vue'),
+                    component: () => import(/* webpackChunkName: "merchantNatureList" */ '@/views/merchant/MerchantNatureList.vue'),
                     meta: {
                     meta: {
                        title: '商家性质',
                        title: '商家性质',
                     },
                     },
@@ -306,7 +306,7 @@ const router = new Router({
                 {
                 {
                     path: '/complaintEdit',
                     path: '/complaintEdit',
                     name: 'ComplaintEdit',
                     name: 'ComplaintEdit',
-                    component: () => import(/* webpackChunkName: "complaintEdit" */ '@/views/backstage/ComplaintEdit.vue'),
+                    component: () => import(/* webpackChunkName: "complaintEdit" */ '@/views/user/ComplaintEdit.vue'),
                     meta: {
                     meta: {
                        title: '投诉编辑',
                        title: '投诉编辑',
                     },
                     },
@@ -314,7 +314,7 @@ const router = new Router({
                 {
                 {
                     path: '/complaintList',
                     path: '/complaintList',
                     name: 'ComplaintList',
                     name: 'ComplaintList',
-                    component: () => import(/* webpackChunkName: "complaintList" */ '@/views/backstage/ComplaintList.vue'),
+                    component: () => import(/* webpackChunkName: "complaintList" */ '@/views/user/ComplaintList.vue'),
                     meta: {
                     meta: {
                        title: '投诉',
                        title: '投诉',
                     },
                     },
@@ -322,7 +322,7 @@ const router = new Router({
                 {
                 {
                     path: '/voiceEdit',
                     path: '/voiceEdit',
                     name: 'VoiceEdit',
                     name: 'VoiceEdit',
-                    component: () => import(/* webpackChunkName: "voiceEdit" */ '@/views/VoiceEdit.vue'),
+                    component: () => import(/* webpackChunkName: "voiceEdit" */ '@/views/merchant/VoiceEdit.vue'),
                     meta: {
                     meta: {
                        title: '语音配置编辑',
                        title: '语音配置编辑',
                     },
                     },
@@ -330,7 +330,7 @@ const router = new Router({
                 {
                 {
                     path: '/voiceList',
                     path: '/voiceList',
                     name: 'VoiceList',
                     name: 'VoiceList',
-                    component: () => import(/* webpackChunkName: "voiceList" */ '@/views/VoiceList.vue'),
+                    component: () => import(/* webpackChunkName: "voiceList" */ '@/views/merchant/VoiceList.vue'),
                     meta: {
                     meta: {
                        title: '语音配置',
                        title: '语音配置',
                     },
                     },
@@ -338,7 +338,7 @@ const router = new Router({
                 {
                 {
                     path: '/cooperateApplyEdit',
                     path: '/cooperateApplyEdit',
                     name: 'CooperateApplyEdit',
                     name: 'CooperateApplyEdit',
-                    component: () => import(/* webpackChunkName: "cooperateApplyEdit" */ '@/views/backstage/CooperateApplyEdit.vue'),
+                    component: () => import(/* webpackChunkName: "cooperateApplyEdit" */ '@/views/user/CooperateApplyEdit.vue'),
                     meta: {
                     meta: {
                        title: '合作申请编辑',
                        title: '合作申请编辑',
                     },
                     },
@@ -346,7 +346,7 @@ const router = new Router({
                 {
                 {
                     path: '/cooperateApplyList',
                     path: '/cooperateApplyList',
                     name: 'CooperateApplyList',
                     name: 'CooperateApplyList',
-                    component: () => import(/* webpackChunkName: "cooperateApplyList" */ '@/views/backstage/CooperateApplyList.vue'),
+                    component: () => import(/* webpackChunkName: "cooperateApplyList" */ '@/views/user/CooperateApplyList.vue'),
                     meta: {
                     meta: {
                        title: '合作申请',
                        title: '合作申请',
                     },
                     },
@@ -402,7 +402,7 @@ const router = new Router({
                 {
                 {
                     path: '/priorityEdit',
                     path: '/priorityEdit',
                     name: 'PriorityEdit',
                     name: 'PriorityEdit',
-                    component: () => import(/* webpackChunkName: "priorityEdit" */ '@/views/PriorityEdit.vue'),
+                    component: () => import(/* webpackChunkName: "priorityEdit" */ '@/views/merchant/PriorityEdit.vue'),
                     meta: {
                     meta: {
                        title: '优先级编辑',
                        title: '优先级编辑',
                     },
                     },
@@ -410,7 +410,7 @@ const router = new Router({
                 {
                 {
                     path: '/priorityList',
                     path: '/priorityList',
                     name: 'PriorityList',
                     name: 'PriorityList',
-                    component: () => import(/* webpackChunkName: "priorityList" */ '@/views/PriorityList.vue'),
+                    component: () => import(/* webpackChunkName: "priorityList" */ '@/views/merchant/PriorityList.vue'),
                     meta: {
                     meta: {
                        title: '优先级',
                        title: '优先级',
                     },
                     },
@@ -418,7 +418,7 @@ const router = new Router({
                 {
                 {
                     path: '/deliveryFeeEdit',
                     path: '/deliveryFeeEdit',
                     name: 'DeliveryFeeEdit',
                     name: 'DeliveryFeeEdit',
-                    component: () => import(/* webpackChunkName: "deliveryFeeEdit" */ '@/views/DeliveryFeeEdit.vue'),
+                    component: () => import(/* webpackChunkName: "deliveryFeeEdit" */ '@/views/rider/DeliveryFeeEdit.vue'),
                     meta: {
                     meta: {
                        title: '配送管理编辑',
                        title: '配送管理编辑',
                     },
                     },
@@ -426,10 +426,26 @@ const router = new Router({
                 {
                 {
                     path: '/deliveryFeeList',
                     path: '/deliveryFeeList',
                     name: 'DeliveryFeeList',
                     name: 'DeliveryFeeList',
-                    component: () => import(/* webpackChunkName: "deliveryFeeList" */ '@/views/DeliveryFeeList.vue'),
+                    component: () => import(/* webpackChunkName: "deliveryFeeList" */ '@/views/rider/DeliveryFeeList.vue'),
                     meta: {
                     meta: {
                        title: '配送管理',
                        title: '配送管理',
                     },
                     },
+               },
+                {
+                    path: '/riderSignEdit',
+                    name: 'RiderSignEdit',
+                    component: () => import(/* webpackChunkName: "riderSignEdit" */ '@/views/rider/RiderSignEdit.vue'),
+                    meta: {
+                       title: '骑手签到编辑',
+                    },
+                },
+                {
+                    path: '/riderSignList',
+                    name: 'RiderSignList',
+                    component: () => import(/* webpackChunkName: "riderSignList" */ '@/views/rider/RiderSignList.vue'),
+                    meta: {
+                       title: '骑手签到',
+                    },
                }
                }
                 /**INSERT_LOCATION**/,
                 /**INSERT_LOCATION**/,
                 {
                 {

+ 0 - 0
src/main/vue/src/views/CategoryEdit.vue → src/main/vue/src/views/merchant/CategoryEdit.vue


+ 0 - 0
src/main/vue/src/views/CategoryList.vue → src/main/vue/src/views/merchant/CategoryList.vue


+ 4 - 2
src/main/vue/src/views/merchant/GoodsList.vue

@@ -98,13 +98,15 @@
                     label="操作"
                     label="操作"
                     align="center"
                     align="center"
                     fixed="right"
                     fixed="right"
-                    min-width="350">
+                    min-width="150">
                 <template slot-scope="{row}">
                 <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="take(row)" type="warning" size="mini" plain v-if="row.status === 'PASS'">
                     <el-button @click="take(row)" type="warning" size="mini" plain v-if="row.status === 'PASS'">
                         {{row.takeOff?'上架':'下架'}}
                         {{row.takeOff?'上架':'下架'}}
                     </el-button>
                     </el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                    <el-button @click="deleteRow(row)" type="info" size="mini" plain v-if="row.status !== 'PENDING'">
+                        删除
+                    </el-button>
                     <el-button
                     <el-button
                             v-if="row.status === 'PENDING'"
                             v-if="row.status === 'PENDING'"
                             :loading="row.loading"
                             :loading="row.loading"

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

@@ -116,14 +116,14 @@
             </el-table-column>-->
             </el-table-column>-->
             <el-table-column label="操作" align="center" fixed="right" min-width="250">
             <el-table-column label="操作" align="center" fixed="right" min-width="250">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
-                    <el-button @click="showDrawer(row)" type="primary" size="mini" plain>详情</el-button>
+                    <el-button @click="showDrawer(row)" type="success" size="mini" plain>详情</el-button>
                     <el-button @click="" type="primary" size="mini" plain v-if="row.isPass">报表</el-button>
                     <el-button @click="" type="primary" size="mini" plain v-if="row.isPass">报表</el-button>
                     <el-button @click="" type="primary" size="mini" plain v-if="row.isPass">评价</el-button>
                     <el-button @click="" type="primary" size="mini" plain v-if="row.isPass">评价</el-button>
                     <el-button
                     <el-button
                             v-if="row.status === 'PENDING'"
                             v-if="row.status === 'PENDING'"
                             :loading="row.loading"
                             :loading="row.loading"
                             @click="audit(row, true)"
                             @click="audit(row, true)"
-                            type="primary"
+                            type="warning"
                             size="mini"
                             size="mini"
                             plain
                             plain
                     >通过
                     >通过

+ 0 - 0
src/main/vue/src/views/MerchantNatureEdit.vue → src/main/vue/src/views/merchant/MerchantNatureEdit.vue


+ 0 - 0
src/main/vue/src/views/MerchantNatureList.vue → src/main/vue/src/views/merchant/MerchantNatureList.vue


+ 0 - 0
src/main/vue/src/views/PriorityEdit.vue → src/main/vue/src/views/merchant/PriorityEdit.vue


+ 0 - 0
src/main/vue/src/views/PriorityList.vue → src/main/vue/src/views/merchant/PriorityList.vue


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini