guomengjiao месяцев назад: 5
Родитель
Сommit
cba6945827

+ 4 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/order/ShopOrderCommentController.java

@@ -3,16 +3,14 @@ package com.ruoyi.web.controller.shop.order;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.validate.AddGroup;
-import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.enums.FilePathSplicingType;
+import com.ruoyi.common.filepathsplicing.FilePathSplicing;
 import com.ruoyi.shop.order.domain.bo.ShopOrderCommentBo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderCommentVo;
 import com.ruoyi.shop.order.service.IShopOrderCommentService;
@@ -23,11 +21,9 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.Arrays;
-import java.util.List;
 
 /**
  * 订单评论Controller
@@ -47,6 +43,7 @@ public class ShopOrderCommentController extends BaseController {
     /**
      * 分页查询订单评论列表
      */
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
     @ApiOperation("查询订单评论列表")
     @SaCheckPermission("order:shopOrderComment:list")
     @GetMapping("/page")
@@ -58,6 +55,7 @@ public class ShopOrderCommentController extends BaseController {
     /**
      * 获取订单评论详细信息
      */
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
     @ApiOperation("获取订单评论详细信息")
     @GetMapping("/info/{commentId}")
     public R<ShopOrderCommentVo> getInfo(@ApiParam("主键")

+ 5 - 0
ruoyi-admin/src/main/resources/application-dev.yml

@@ -240,3 +240,8 @@ getui:
   appKey: 4uKDqSxC4d5jdTwBRHCTs8
   appSecret: iGj6JOqsPp6UOQ8xyjpNe8
   masterSecret: HSs1OFyUEp8wbWTCdGaNA1
+
+feixin:
+  appkey: j18Ldd
+  appsecret: h5TjYE
+  appcode: 1000

+ 4 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -366,6 +366,10 @@ aliyunsample:
 sms:
   redisKey: "vercode:key:"
   verCodeTm: 60
+  # 应用上架的手机号,验证码固定
+  appListing:
+    phone: 18688888888
+    code: 1024
 
 # 阿里云账号AK信息
 # 内容安全接口地址:https://green-cip.cn-shanghai.aliyuncs.com(47.116.84.226)

+ 5 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -153,5 +153,10 @@ public interface Constants {
      *  默认维权天数3天
      */
     public static final Integer defaultRightsDays = 3;
+
+    /**
+     * 飞信短信 redis key
+     */
+    String FX_SMS_CAPTCHA_CODE_KEY = "fei_xin_captcha_code:";
 }
 

+ 144 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsFeiXinUtil.java

@@ -0,0 +1,144 @@
+package com.ruoyi.common.utils;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.MD5;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.redis.RedisUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class SmsFeiXinUtil {
+
+    @Value("${feixin.appkey}")
+    private String appkey;
+
+    @Value("${feixin.appsecret}")
+    private String appsecret;
+
+    @Value("${feixin.appcode}")
+    private String appcode;
+
+    @Value("${sms.appListing.phone}")
+    private String appListingPhone;
+
+    @Value("${sms.appListing.code}")
+    private String appListingCode;
+
+    private String queryMoney = "http://api.feixinyun.com:9090/sms/balance/v1";
+
+    private String sendUrl = "http://api.feixinyun.com:9090/sms/batch/v1";
+
+    /**
+     * 生成sign
+     *
+     * @param timestamp
+     * @return
+     */
+    private String generateSign(String appkey, String appsecret, Long timestamp) {
+        return MD5.create().digestHex(appkey + appsecret + timestamp);
+    }
+
+    /**
+     * 获取账户余额
+     *
+     * @return
+     */
+    public Integer queryFeiXinMoney() {
+        long timestamp = System.currentTimeMillis();
+        Map<String, Object> params = new HashMap<>();
+        params.put("appkey", appkey);
+        params.put("appcode", appcode);
+        params.put("sign", generateSign(appkey, appsecret, timestamp));
+        params.put("timestamp", timestamp);
+        String resultStr = HttpUtil.get(queryMoney, params);
+
+        JSONObject resultJson = JSONObject.parseObject(resultStr);
+        String code = resultJson.getString("code");
+        if (StrUtil.isNotEmpty(code)) {
+            throw new ServiceException(resultJson.getString("desc"), 900001);
+        }
+        return resultJson.getInteger("balance");
+    }
+
+    /**
+     * 短信发送
+     *
+     * @return
+     */
+    public Boolean sendSmsCode(String phone, String code) {
+        long timestamp = System.currentTimeMillis();
+        JSONObject params = new JSONObject();
+        params.put("appkey", appkey);
+        params.put("appcode", appcode);
+        params.put("sign", generateSign(appkey, appsecret, timestamp));
+        params.put("timestamp", timestamp);
+        params.put("phone", phone);
+        String content = String.format("【宜格服务】验证码:%s,请尽快返回完成验证。如非本人使用,敬请忽略本信息。", code);
+        params.put("msg", content);
+        String resultStr = HttpUtil.post(sendUrl, params.toString());
+        System.out.println(" -----> " + resultStr);
+        JSONObject resultJson = JSONObject.parseObject(resultStr);
+        String resuldCode = resultJson.getString("code");
+        if (resuldCode.equals("00000")) {
+            return true;
+        }
+        throw new ServiceException(resultJson.getString("desc"), 90002);
+    }
+
+    /**
+     * 检验验证码是否正确
+     *
+     * @param phone
+     * @param codeOld
+     */
+    public void checkSmsCode(String phone, String codeOld) {
+        //return;
+        String code;
+        //如果手机号是18688888888,则验证码是1024
+        if (appListingPhone.equals(phone)) {
+            code = appListingCode;
+        } else {
+            //获取验证码
+            code = RedisUtils.getCacheObject(Constants.FX_SMS_CAPTCHA_CODE_KEY + phone);
+        }
+
+        if (StrUtil.isEmpty(code)) {
+            throw new ServiceException("验证码已过期");
+        } else {
+            if (!code.equals(codeOld)) {
+                throw new ServiceException("验证码不正确");
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        String appkey = "j18Ldd";
+        String appcode = "1000";
+        String appsecret = "h5TjYE";
+        String phone = "15014059100";
+        String code = "9999";
+        String content = String.format("【宜格服务】验证码:%s,请尽快返回完成验证。如非本人使用,敬请忽略本信息。", code);
+        String sendUrl = "http://api.feixinyun.com:9090/sms/batch/v1";
+        long timestamp = System.currentTimeMillis();
+
+        JSONObject params = new JSONObject();
+        params.put("appkey", appkey);
+        params.put("appcode", appcode);
+        params.put("sign", MD5.create().digestHex(appkey + appsecret + timestamp));
+        params.put("timestamp", timestamp);
+        params.put("phone", phone);
+        params.put("msg", content);
+        String resultStr = HttpUtil.post(sendUrl, params.toString());
+        System.out.println(" -----> " + resultStr);
+    }
+
+}

+ 22 - 2
ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsSend.java

@@ -21,6 +21,15 @@ public class SmsSend {
     @Resource
     private Sample sample;
 
+    @Resource
+    private SmsFeiXinUtil smsFeiXinUtil;
+
+    @Value("${sms.appListing.phone}")
+    private String appListingPhone;
+
+    @Value("${sms.appListing.code}")
+    private String appListingCode;
+
     @Value("${sms.redisKey}")
     private String redisKey;  //验证码缓存KEY
 
@@ -38,6 +47,9 @@ public class SmsSend {
             String code = RandomStringUtils.randomNumeric(4);
             String mode = sendSmsCodeMode();
             switch (mode) {
+                case "0":
+                    smsFeiXinUtil.sendSmsCode(phone, code);
+                    break;
                 case "1":
                     sample.sendCode(phone, code);
                     break;
@@ -57,7 +69,15 @@ public class SmsSend {
      */
     public void check(String phone, String checkCode) {
         if (openSmsCode()) {
-            String code = RedisUtils.getCacheObject(redisKey + phone);
+            String code;
+            //如果手机号是18688888888,则验证码是1024
+            if (appListingPhone.equals(phone)) {
+                code = appListingCode;
+            } else {
+                //获取验证码
+                code = RedisUtils.getCacheObject(redisKey + phone);
+            }
+
             if (StrUtil.isEmpty(code)) {
                 throw new ServiceException("手机验证码已过期");
             } else {
@@ -91,7 +111,7 @@ public class SmsSend {
     private String sendSmsCodeMode() {
         String mode = RedisUtils.getCacheObject(Constants.SYS_CONFIG_KEY + "send:sms:code:mode");
         if (StringUtils.isEmpty(mode)) {
-            return "1";
+            return "0";
         }
         return mode;
     }