From 6f7507665afbf3a3a985c0554cb4031d3b84a1a7 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 17 六月 2024 14:55:19 +0800
Subject: [PATCH] 1.修改bug 2.对接聚通达短信服务

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java               |    7 
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                        |   12 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java            |   54 ++++++++--
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java                    |    5 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java            |    7 +
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml                         |    8 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java                    |    5 
 ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java                                             |  141 ++++++++++++++++++++++++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java                  |    3 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java |    3 
 10 files changed, 210 insertions(+), 35 deletions(-)

diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index af14835..a14e00c 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -5,8 +5,10 @@
 import com.ruoyi.auth.form.LoginBody;
 import com.ruoyi.auth.form.RegisterBody;
 import com.ruoyi.auth.service.SysLoginService;
+import com.ruoyi.auth.utils.JuTongDaSMSUtil;
 import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.JwtUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisService;
@@ -17,7 +19,6 @@
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
-import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import com.ruoyi.system.api.model.LoginUser;
 import io.swagger.annotations.Api;
@@ -149,6 +150,11 @@
     @GetMapping("send-verification-code")
     @ApiOperation(value = "管理后台-发送验证码")
     public R<?> changePassword(@RequestParam("username") String username) {
+        Boolean result = redisService.hasKey(
+                CacheConstants.CHANGE_PASSWORD_CAPTCHA_CODE_KEY + username);
+        if (result) {
+            throw new ServiceException("请勿重复发送验证码");
+        }
         //校验手机号码
         SysUser sysUser = userClient.queryUserByUserName(username).getData();
         if (StringUtils.isNull(sysUser)) {
@@ -156,9 +162,7 @@
         }
         String code = RandomUtil.randomNumbers(6);
         try {
-            //TODO 发送短信未配置
-//            HuaWeiSMSUtil.sendSms(code, sysUser.getUserName(), "8823121426646",
-//                    "cf1707ec44694627b1b483b0277e12fd");
+            JuTongDaSMSUtil.smsSend(sysUser.getUserName(), code, "", "");
         } catch (Exception e) {
             log.error("【修改密码】发送短信失败", e);
             return R.fail("发送失败");
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java
new file mode 100644
index 0000000..621e6a1
--- /dev/null
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java
@@ -0,0 +1,141 @@
+package com.ruoyi.auth.utils;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
+
+/**
+ * 聚通达短信发送工具类
+ *
+ * @author mitao
+ * @date 2024/6/17
+ */
+public class JuTongDaSMSUtil {
+
+    private static final String UID = "201000";
+    private static final String PWD = "926893";
+    private static final String template = "【酒鼎老酒】您的验证码为:${code},该验证码5分钟内有效,请勿泄露于他人!";
+
+    public static void main(String[] args) {
+        String moblies = "18283820718";
+        String content = "123456";
+        String ext = "";
+        String attime = "";
+        String result = JuTongDaSMSUtil.smsSend(moblies, content, ext, attime);
+        System.out.println("result=" + result);
+    }
+
+    // 发送短信
+    public static String smsSend(String mobile, String content,
+            String ext, String attime) {
+        String errMess = "";
+        StringBuffer sendData = new StringBuffer("");
+        try {
+            sendData.append("uid=").append(UID);    // 用户名
+            String pwd = getMD5(PWD);// 原始密码做MD5加密,32位大写格式
+            sendData.append("&password=").append(pwd);    // 密码
+
+            sendData.append("&encode=").append("GBK");    // encode=GBK或者encode=utf8
+            content = template.replace("${code}", content);
+            String contentBase64 = Base64.getEncoder()
+                    .encodeToString(content.getBytes("gbk"));// 先用encode中定义的格式编码,再用base64加密内容
+            sendData.append("&encodeType=base64");    // 固定
+            sendData.append("&content=").append(contentBase64);    // base64加密后的内容
+
+            sendData.append("&mobile=").append(mobile);    // 手机号
+//			sendData.append("&cid=").append("45955855252252555");	// 唯一标识,选填,如果不填系统自动生成作为当前批次的唯一标识
+            if (!StringUtils.isNotBlank(ext)) {
+                sendData.append("&extNumber=").append(ext);    // 扩展
+            }
+
+            if (!StringUtils.isNotBlank(attime)) {
+                sendData.append("&schtime=").append(attime);    // 定时时间,选填,格式2008-06-09 12:00:00
+            }
+            errMess = sendPost("https://sms3api.jvtd.cn/jtdsms/smsSend",
+                    sendData.toString());// 普通短信
+//			errMess =sendPost("http://ip:8090/jtdsms/sendData.do", sendData.toString());//个性短信
+        } catch (Exception e) {
+            errMess = "-601";
+        }
+        return errMess;
+    }
+
+
+    public static String sendPost(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        try {
+            URL realUrl = new URL(url);
+            // 打开和URL之间的连接
+            URLConnection conn = realUrl.openConnection();
+            // 设置通用的请求属性
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent",
+                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            // 发送POST请求必须设置如下两行
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            // 获取URLConnection对象对应的输出流
+            out = new PrintWriter(conn.getOutputStream());
+            // 发送请求参数
+            out.print(param);
+            // flush输出流的缓冲
+            out.flush();
+            // 定义BufferedReader输入流来读取URL的响应
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送 POST 请求出现异常!" + e);
+            e.printStackTrace();
+        }
+        // 使用finally块来关闭输出流、输入流
+        finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+
+    public static String getMD5(String sourceStr) {
+        String resultStr = "";
+        try {
+            byte[] temp = sourceStr.getBytes();
+            MessageDigest md5 = MessageDigest.getInstance("MD5");
+            md5.update(temp);
+            byte[] b = md5.digest();
+            for (int i = 0; i < b.length; i++) {
+                char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
+                        '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+                char[] ob = new char[2];
+                ob[0] = digit[(b[i] >>> 4) & 0X0F];
+                ob[1] = digit[b[i] & 0X0F];
+                resultStr += new String(ob);
+            }
+            return resultStr;
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
index a14c80a..69e1e96 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -33,7 +33,6 @@
 import com.ruoyi.member.domain.MemberLevel;
 import com.ruoyi.member.mapper.MemberLevelMapper;
 import com.ruoyi.member.mapper.MemberMapper;
-import com.ruoyi.member.service.IMemberLevelService;
 import com.ruoyi.member.service.IMemberPointsService;
 import com.ruoyi.member.service.IMemberService;
 import com.ruoyi.member.util.HttpUtils;
@@ -506,8 +505,6 @@
     @Override
     public PageDTO<MgtMemberVO> getMemberPage(MgtMemberQuery query) {
         Page<Member> page = this.lambdaQuery()
-                .select(Member::getId, Member::getNickname, Member::getRealName, Member::getPhone,
-                        Member::getIdNumber)
                 .like(StringUtils.isNotBlank(query.getRealName()), Member::getRealName,
                         query.getRealName())
                 .like(StringUtils.isNotBlank(query.getPhone()), Member::getPhone, query.getPhone())
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml
index 110ea99..3b323be 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml
@@ -9,8 +9,8 @@
     o.order_no,
     o.member_id,
     CASE
-    WHEN o.order_from = 4 THEN 2 -- 当order_from为拍卖订单时,orderType赋值为2
-    ELSE 1 -- 其他情况下,orderType赋值为1
+    WHEN o.order_from = 4 THEN 2
+    ELSE 1
     END AS orderType,
     o.order_from
     FROM
@@ -35,10 +35,10 @@
       <if test="query.status != null">
         AND torr.status = #{query.status}
       </if>
-      <if test="query.orderType != null and query.orderType== 1">
+      <if test="query.orderType != null and query.orderType== OrderTypeEnum.MALL_ORDER">
         AND o.order_from in (1,2,3)
       </if>
-      <if test="query.orderType != null and query.orderType== 2">
+      <if test="query.orderType != null and query.orderType== OrderTypeEnum.AUCTION_ORDER">
         AND o.order_from = 4
       </if>
     </where>
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
index fe1e4e4..d2da704 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
@@ -83,8 +83,7 @@
     /**
      * 上架/下架
      *
-     * @param dto
-     * @return
+     * @param dto 管理后台-优惠券上架下架数据传输对象
      */
     @ApiOperation("上架/下架")
     @PutMapping("/upd-status")
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
index 6b5a0bb..213a31f 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
@@ -43,6 +43,11 @@
      */
     void updateCoupon(MgtCouponDTO dto);
 
+    /**
+     * 上架/下架
+     *
+     * @param dto 管理后台-优惠券上架下架数据传输对象
+     */
     void updStatus(MgtCouponUpdDTO dto);
 
     /**
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
index ec17393..96880f7 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
@@ -160,11 +160,16 @@
         this.updateById(coupon);
     }
 
+    /**
+     * 上架/下架
+     *
+     * @param dto 管理后台-优惠券上架下架数据传输对象
+     */
     @Override
     public void updStatus(MgtCouponUpdDTO dto) {
         this.lambdaUpdate()
                 .set(Coupon::getCouponStatus, dto.getCouponStatus())
-                .eq(Coupon::getId, dto.getId());
+                .eq(Coupon::getId, dto.getId()).update();
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java
index df0da04..fde666c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java
@@ -11,7 +11,6 @@
 import com.ruoyi.system.service.ICustomConfigService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import java.util.List;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -52,7 +51,7 @@
      */
     @ApiOperation("获取积分设置")
     @GetMapping("/points")
-    public R<List<CustomConfigVO>> getPointsConfig() {
+    public R<PointsConfigDTO> getPointsConfig() {
         return R.ok(iCustomConfigService.getPointsConfig());
     }
     /**
@@ -109,8 +108,8 @@
      * @return List<CustomConfigVO>
      */
     @ApiOperation("获取售后设置")
-    @PostMapping("/get-after-sale-setting")
-    public R<List<CustomConfigVO>> getAfterSaleSetting() {
+    @GetMapping("/get-after-sale-setting")
+    public R<MgtAfterSaleSettingDTO> getAfterSaleSetting() {
         return R.ok(iCustomConfigService.getAfterSaleSetting());
     }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java
index 2de5519..eb30871 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java
@@ -5,7 +5,6 @@
 import com.ruoyi.system.domain.dto.MgtAfterSaleSettingDTO;
 import com.ruoyi.system.domain.dto.PointsConfigDTO;
 import com.ruoyi.system.domain.vo.CustomConfigVO;
-import java.util.List;
 
 /**
  * <p>
@@ -30,7 +29,7 @@
      *
      * @return List<CustomConfig>
      */
-    List<CustomConfigVO> getPointsConfig();
+    PointsConfigDTO getPointsConfig();
 
     /**
      * 获取订单说明设置
@@ -58,5 +57,5 @@
      *
      * @return List<CustomConfigVO>
      */
-    List<CustomConfigVO> getAfterSaleSetting();
+    MgtAfterSaleSettingDTO getAfterSaleSetting();
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java
index ab04e64..cc7a246 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.system.domain.vo.CustomConfigVO;
 import com.ruoyi.system.mapper.CustomConfigMapper;
 import com.ruoyi.system.service.ICustomConfigService;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Optional;
 import org.springframework.stereotype.Service;
@@ -70,12 +71,22 @@
      * @return List<CustomConfigVO>
      */
     @Override
-    public List<CustomConfigVO> getPointsConfig() {
+    public PointsConfigDTO getPointsConfig() {
+        PointsConfigDTO dto = new PointsConfigDTO();
         List<CustomConfig> list = this.lambdaQuery()
-                .in(CustomConfig::getConfigType, ConfigEnum.MEMBER_POINTS_MONEY.getKey(),
+                .in(CustomConfig::getConfigKey, ConfigEnum.MEMBER_POINTS_MONEY.getKey(),
                         ConfigEnum.MEMBER_POINTS_POINTS.getKey())
                 .eq(CustomConfig::getDelFlag, 0).list();
-        return BeanUtils.copyList(list, CustomConfigVO.class);
+        for (CustomConfig customConfig : list) {
+            if (ConfigEnum.MEMBER_POINTS_MONEY.getKey().equals(customConfig.getConfigKey())) {
+                dto.setConsumeAmount(
+                        BigDecimal.valueOf(Double.parseDouble(customConfig.getConfigValue())));
+            }
+            if (ConfigEnum.MEMBER_POINTS_POINTS.getKey().equals(customConfig.getConfigKey())) {
+                dto.setPoints(Integer.parseInt(customConfig.getConfigValue()));
+            }
+        }
+        return dto;
     }
 
     /**
@@ -126,17 +137,16 @@
     }
 
     private void handleConfigSetting(String value, ConfigEnum configEnum) {
-        Optional<CustomConfig> receiverNameConfigOptional = getCustomConfigByKey(
-                ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey());
-        CustomConfig receiverNameConfig = receiverNameConfigOptional.orElseGet(() -> {
+        Optional<CustomConfig> configSettingOptional = getCustomConfigByKey(configEnum.getKey());
+        CustomConfig configSetting = configSettingOptional.orElseGet(() -> {
             CustomConfig config = new CustomConfig();
-            config.setConfigKey(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey());
-            config.setConfigType(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKeyType());
-            config.setConfigName(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKeyName());
+            config.setConfigKey(configEnum.getKey());
+            config.setConfigType(configEnum.getKeyType());
+            config.setConfigName(configEnum.getKeyName());
             return config;
         });
-        receiverNameConfig.setConfigValue(value);
-        this.saveOrUpdate(receiverNameConfig);
+        configSetting.setConfigValue(value);
+        this.saveOrUpdate(configSetting);
     }
 
     /**
@@ -145,12 +155,28 @@
      * @return List<CustomConfigVO>
      */
     @Override
-    public List<CustomConfigVO> getAfterSaleSetting() {
+    public MgtAfterSaleSettingDTO getAfterSaleSetting() {
+        MgtAfterSaleSettingDTO dto = new MgtAfterSaleSettingDTO();
         List<CustomConfig> list = this.lambdaQuery()
-                .in(CustomConfig::getConfigType, ConfigEnum.RETURN_ADDRESS_USER_NAME,
+                .in(CustomConfig::getConfigKey, ConfigEnum.RETURN_ADDRESS_USER_NAME,
                         ConfigEnum.RETURN_ADDRESS_USER_PHONE,
                         ConfigEnum.RETURN_ADDRESS_USER_ADDRESS, ConfigEnum.RETURN_CYCLE)
                 .eq(CustomConfig::getDelFlag, 0).list();
-        return BeanUtils.copyList(list, CustomConfigVO.class);
+        for (CustomConfig customConfig : list) {
+            if (ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey().equals(customConfig.getConfigKey())) {
+                dto.setReceiverName(customConfig.getConfigValue());
+            }
+            if (ConfigEnum.RETURN_ADDRESS_USER_PHONE.getKey().equals(customConfig.getConfigKey())) {
+                dto.setReceiverPhone(customConfig.getConfigValue());
+            }
+            if (ConfigEnum.RETURN_ADDRESS_USER_ADDRESS.getKey()
+                    .equals(customConfig.getConfigKey())) {
+                dto.setReceiverAddress(customConfig.getConfigValue());
+            }
+            if (ConfigEnum.RETURN_CYCLE.getKey().equals(customConfig.getConfigKey())) {
+                dto.setReturnCycle(Integer.parseInt(customConfig.getConfigValue()));
+            }
+        }
+        return dto;
     }
 }

--
Gitblit v1.7.1