mitao
2024-06-17 6f7507665afbf3a3a985c0554cb4031d3b84a1a7
1.修改bug
2.对接聚通达短信服务
1个文件已添加
9个文件已修改
245 ■■■■ 已修改文件
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("发送失败");
ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java
New file
@@ -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;
        }
    }
}
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())
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>
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")
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);
    /**
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();
    }
    /**
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());
    }
}
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();
}
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;
    }
}