Browse Source

开发前端获取jssdk签名接口

jinshihui 2 weeks ago
parent
commit
d2f93e757b

+ 6 - 33
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/MaTechnicianController.java

@@ -51,7 +51,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
@@ -106,37 +106,12 @@ public class MaTechnicianController extends BaseController {
     @Autowired
     private WxTokenService wxTokenService;
 
+    @Autowired
+    private PasswordEncoder passwordEncoder;
+
 
     public static final String PHONE_THREEUSERPARTCLIENT_CODE_KEY = "sys:clientLogin:phone:";
 
-    /**
-     * 发送短信验证码
-     *
-     * @param phone 手机号
-     * @param request
-     * @return Result
-     */
-    @GetMapping("/sendMsg")
-    @ApiOperation(value = "短信发送", notes = "短信发送")
-    public Result sendMsg(@RequestParam String phone, HttpServletRequest request) {
-        if (org.apache.commons.lang3.StringUtils.isEmpty(phone)) {
-            return Result.error("手机号不能为空");
-        }
-        Random rand = new Random();
-        // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
-        int randNumber = rand.nextInt(9999 - 1000 + 1) + 1000;
-        // 保存验证码到redis中,过期时间为5分钟
-        redisTemplate.opsForValue().set(PHONE_THREEUSERPARTCLIENT_CODE_KEY + phone, String.valueOf(randNumber), 5L, TimeUnit.MINUTES);
-        try {
-            SMSVerificationCode smsVerificationCode = new SMSVerificationCode(String.valueOf(randNumber));
-            String jsonString = JSON.toJSONString(smsVerificationCode);
-            sendSms.sendSms(phone, SendSmsEnum.SMS_220650024, jsonString);
-            return Result.ok("发送成功");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return Result.ok("发送成功");
-    }
 
     /**
      * 商户手机号密码登录
@@ -177,9 +152,8 @@ public class MaTechnicianController extends BaseController {
             }
         } else {
             // 初始化加密工具
-            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
             // 验证:比对是否匹配
-            boolean isOk = encoder.matches(thirdPartyLoginsVo.getPassWord(), maTechnician.getTePassword());
+            boolean isOk = passwordEncoder.matches(thirdPartyLoginsVo.getPassWord(), maTechnician.getTePassword());
             /*if (!isOk) {
                 return Result.error("密码错误");
             }*/
@@ -240,9 +214,8 @@ public class MaTechnicianController extends BaseController {
             // 重置密码逻辑
             LambdaUpdateWrapper<MaTechnician> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(MaTechnician::getTePhone, thirdPartyLoginsVo.getPhone());
-            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
             // 对密码进行加密
-            String encryptedPassword = encoder.encode(thirdPartyLoginsVo.getPassWord());
+            String encryptedPassword = passwordEncoder.encode(thirdPartyLoginsVo.getPassWord());
             updateWrapper.set(MaTechnician::getTePassword, encryptedPassword);
             maTechnicianService.update(updateWrapper);
             // 重置密码成功删除验证码

+ 5 - 3
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/WeChatController.java

@@ -180,14 +180,13 @@ public class WeChatController extends BaseController {
     /**
      * 前端获取jssdk签名
      *
-     * @param url
+     * @param url 页面url
      * @return Map<?, ?>
      */
     @GetMapping("/getSignature")
     @ApiOperation("前端获取jssdk签名")
     @Log(title = "前端获取jssdk签名", businessType = BusinessType.OTHER)
     public Map<?, ?> getSignature(String url) {
-
         //获取access_token
         String token = weChatUtil.getToken();
         //获取jsapi_ticket
@@ -430,6 +429,10 @@ public class WeChatController extends BaseController {
         }
     }
 
+    /**
+     *
+     * @param jsId
+     */
     @ApiOperation("获取JS公众号二维码ticket")
     @RequestMapping(value = "getJSwxQrCode", method = RequestMethod.GET)
     public void getJSwxQrCode(@RequestParam String jsId) {
@@ -437,7 +440,6 @@ public class WeChatController extends BaseController {
         String token = weChatUtil.getToken();
         //获取的二维码ticket
         Map<?, ?> jsTicket = weChatUtil.getJsTicket(token, jsId);
-
         //获取的二维码ticket
         //获取二维码图片
         //String qrCodeUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket;

+ 4 - 1
nightFragrance-framework/src/main/java/com/ylx/framework/config/SecurityConfig.java

@@ -12,6 +12,7 @@ import org.springframework.security.config.annotation.web.configurers.Expression
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.security.web.authentication.logout.LogoutFilter;
 import org.springframework.web.filter.CorsFilter;
@@ -136,9 +137,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
     /**
      * 强散列哈希加密实现
+     *
+     * @return PasswordEncoder
      */
     @Bean
-    public BCryptPasswordEncoder bCryptPasswordEncoder() {
+    public PasswordEncoder bCryptPasswordEncoder() {
         return new BCryptPasswordEncoder();
     }
 

+ 12 - 20
nightFragrance-massage/src/main/java/com/ylx/massage/utils/JsSignUtil.java

@@ -23,8 +23,7 @@ public class JsSignUtil {
     @Resource
     private WechatAccountConfig wxPayProperties;
 
-    public Map<String, String> sign(String url,String jsapi_ticket) {
-
+    public Map<String, String> sign(String url, String jsapi_ticket) {
         Map<String, String> ret = new HashMap<String, String>();
         String nonce_str = create_nonce_str();
         String timestamp = create_timestamp();
@@ -36,21 +35,16 @@ public class JsSignUtil {
                 "&noncestr=" + nonce_str +
                 "&timestamp=" + timestamp +
                 "&url=" + url;
-        System.out.println("string1="+string1);
+        System.out.println("string1=" + string1);
 
-        try
-        {
+        try {
             MessageDigest crypt = MessageDigest.getInstance("SHA-1");
             crypt.reset();
             crypt.update(string1.getBytes("UTF-8"));
             signature = byteToHex(crypt.digest());
-        }
-        catch (NoSuchAlgorithmException e)
-        {
+        } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
-        }
-        catch (UnsupportedEncodingException e)
-        {
+        } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
 
@@ -61,13 +55,12 @@ public class JsSignUtil {
         ret.put("signature", signature);
         ret.put("appId", wxPayProperties.getMpAppId());//公众号appid
 
-        System.out.println("1.ticket(原始)="+jsapi_ticket);
-        System.out.println("2.url="+ret.get("url"));
-        System.out.println("3.jsapi_ticket(处理后)="+ret.get("jsapi_ticket"));
-        System.out.println("4.nonceStr="+ret.get("nonceStr"));
-        System.out.println("5.signature="+ret.get("signature"));
-        System.out.println("6.timestamp="+ret.get("timestamp"));
-
+        System.out.println("1.ticket(原始)=" + jsapi_ticket);
+        System.out.println("2.url=" + ret.get("url"));
+        System.out.println("3.jsapi_ticket(处理后)=" + ret.get("jsapi_ticket"));
+        System.out.println("4.nonceStr=" + ret.get("nonceStr"));
+        System.out.println("5.signature=" + ret.get("signature"));
+        System.out.println("6.timestamp=" + ret.get("timestamp"));
         return ret;
     }
 
@@ -79,8 +72,7 @@ public class JsSignUtil {
      */
     private static String byteToHex(final byte[] hash) {
         Formatter formatter = new Formatter();
-        for (byte b : hash)
-        {
+        for (byte b : hash) {
             formatter.format("%02x", b);
         }
         String result = formatter.toString();

+ 9 - 7
nightFragrance-massage/src/main/java/com/ylx/massage/utils/WeChatUtil.java

@@ -123,6 +123,7 @@ public class WeChatUtil {
         Map<?, ?> map = JSONObject.parseObject(rs, Map.class);
         log.info("map的值:{}", map);
         if (null == map.get(ERROR_CODE)) {
+            //key值:access_token:appid,缓存1小时
             redisCache.setCacheObject(MassageConstants.ACCESS_TOKEN_KEY + wxPayProperties.getMpAppId(), map.get("access_token").toString(), 1, TimeUnit.HOURS);
             return map.get("access_token").toString();
         } else {
@@ -183,21 +184,22 @@ public class WeChatUtil {
     }
 
     /**
-     * 获取jsticke
+     * 获取js-sdk临时票据
+     *
+     * @param token 微信AccessToken
+     * @return String 获取js-sdk临时票据
      */
     public String getJsapiTicket(String token) {
-        //todo 缓存公众号全局token凭证
+        //todo 缓存服务号全局token凭证
         StringBuffer url = new StringBuffer();
-        url.append("https://api.weixin.qq.com/cgi-bin/ticket/getticket")
-                .append("?access_token=").append(token)
-                .append("&type=").append("jsapi");
+        url.append("https://api.weixin.qq.com/cgi-bin/ticket/getticket").append("?access_token=").append(token).append("&type=").append("jsapi");
         String rs = HttpUtil.get(url.toString());
         Map<?, ?> map = JSONObject.parseObject(rs, Map.class);
         if ("ok".equals(map.get("errmsg"))) {
             return map.get("ticket").toString();
         } else {
-            log.error("获取jsticke出错:{}", map);
-            throw new ServiceException("获取jsticke出错");
+            log.error("获取js-sdk临时票据出错:{}", map);
+            throw new ServiceException("获取js-sdk临时票据出错");
         }
     }