From 9155df2aeab5b0d95c89dd928dbaefbfbaeae9d1 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期四, 05 九月 2024 17:10:35 +0800 Subject: [PATCH] zjh 2024-09-05 --- ltkj-admin/src/main/java/com/ltkj/web/controller/app/WxloginController.java | 71 ++++++++++++++++++++++++++++++----- 1 files changed, 60 insertions(+), 11 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/app/WxloginController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/app/WxloginController.java index b65f275..c570344 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/app/WxloginController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/app/WxloginController.java @@ -1,5 +1,6 @@ package com.ltkj.web.controller.app; +import cn.hutool.core.date.DateTime; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,8 +14,10 @@ import com.ltkj.framework.config.JwtUtils; import com.ltkj.framework.config.UserHoder; import com.ltkj.hosp.domain.GetPhone; +import com.ltkj.hosp.domain.TjCustomer; import com.ltkj.hosp.domain.Wxuser; import com.ltkj.hosp.service.IAbucoderWxuserService; +import com.ltkj.hosp.service.ITjCustomerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -25,6 +28,7 @@ import org.aspectj.bridge.MessageWriter; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.beans.factory.annotation.Value; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import sun.misc.BASE64Decoder; @@ -40,10 +44,7 @@ import java.security.Security; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * @Author: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃/璧典匠璞� @@ -58,7 +59,8 @@ @Api(tags = "A灏忕▼搴忕鐧诲綍鎺ュ彛澶у叏") @Slf4j public class WxloginController extends BaseController { - + @Resource + private ITjCustomerService customerService; @Resource private IAbucoderWxuserService wxuserService; @@ -71,6 +73,7 @@ /** * 灏忕▼搴忕櫥褰� + * * @param code 灏忕▼搴弚x.login杩斿洖鐨勪复鏃跺嚟璇� * @return */ @@ -110,7 +113,7 @@ wxuser.setCreateTime(new Date()); wxuser.setWxMiniOpenId(openId); wxuserService.save(wxuser); - map.put("wxuser",wxuser); + map.put("wxuser", wxuser); } // 鐢熸垚浠ょ墝 String token = JwtUtils.getToken(map); @@ -130,11 +133,12 @@ @ApiOperation(value = "灏忕▼搴忚幏鍙栫敤鎴疯鎯呬俊鎭帴鍙�") public AjaxResult getWxInfo() { Wxuser wxuser = UserHoder.getWxuser(); - LambdaQueryWrapper<Wxuser>wq=new LambdaQueryWrapper<>(); - wq.eq(Wxuser::getOpenid,wxuser.getOpenid()); + LambdaQueryWrapper<Wxuser> wq = new LambdaQueryWrapper<>(); + wq.eq(Wxuser::getOpenid, wxuser.getOpenid()); Wxuser one = wxuserService.getOne(wq); return AjaxResult.success(one); } + /** * 寰俊鎵嬫満鍙风爜缁戝畾 */ @@ -156,7 +160,7 @@ byte[] raw = decoder.decodeBuffer(sessionKey); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); IvParameterSpec iv1 = new IvParameterSpec(decoder.decodeBuffer(iv)); - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding","BC"); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC"); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv1); OkHttpClient client = new OkHttpClient(); Request okrequest = new Request.Builder() @@ -191,6 +195,7 @@ /** * 鍙戦�佽姹傜敤code鎹㈠彇sessionKey鍜岀浉鍏充俊鎭� + * * @param code * @return */ @@ -208,7 +213,15 @@ * @param sessionKey * @param iv * @return + * */ + /** + * 瑙e喅java涓嶆敮鎸丄ES/CBC/PKCS7Padding妯″紡瑙e瘑 + */ + static { + Security.addProvider(new BouncyCastleProvider()); + } + public static JSONObject decryptionUserInfo(String encryptedData, String sessionKey, String iv) { // 琚姞瀵嗙殑鏁版嵁 byte[] dataByte = Base64.decode(encryptedData); @@ -218,7 +231,7 @@ byte[] ivByte = Base64.decode(iv); try { - // 濡傛灉瀵嗛挜涓嶈冻16浣嶏紝閭d箞灏辫ˉ瓒�. 杩欎釜if 涓殑鍐呭寰堥噸瑕� + // 濡傛灉瀵嗛挜涓嶈冻16浣嶏紝閭d箞灏辫ˉ瓒�. 杩欎釜if 涓殑鍐呭寰堥噸瑕� int base = 16; if (keyByte.length % base != 0) { int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); @@ -227,8 +240,12 @@ System.arraycopy(keyByte, 0, temp, 0, keyByte.length); keyByte = temp; } - // 鍒濆鍖� + // 鍒濆鍖� Security.addProvider(new BouncyCastleProvider()); + /** + * 瑙e喅java涓嶆敮鎸丄ES/CBC/PKCS7Padding妯″紡瑙e瘑 + */ + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); @@ -245,6 +262,7 @@ } return null; } + /** * 鍙戦�乭ttps璇锋眰 @@ -332,5 +350,36 @@ return response; } + + @PostMapping("/wx/wxbindphone") + @ApiOperation("鎵嬪姩缁戝畾鎵嬫満鍙锋帴鍙�") + @Transactional + public AjaxResult wxbindphone(@RequestParam @ApiParam(value = "openId") String openId, + @RequestParam @ApiParam(value = "phone") String phone) { + + LambdaQueryWrapper<Wxuser> wq = new LambdaQueryWrapper<>(); + wq.eq(Wxuser::getOpenid, openId); + Wxuser one = wxuserService.getOne(wq); + + if (one!=null){ + one.setPhone(phone); + one.setUpdateTime(new DateTime()); + final boolean b = wxuserService.updateById(one); + if (b){ + LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>(); + qw.eq(TjCustomer::getCusPhone, phone); + List<TjCustomer> tjCustomer1 = customerService.list(qw); + if (tjCustomer1 != null && tjCustomer1.size()>0) { + for (TjCustomer tjCustomer : tjCustomer1) { + tjCustomer.setConnect(openId); + customerService.updateById(tjCustomer); + } + } + return AjaxResult.success("缁戝畾鎴愬姛锛�"); + } + } + return AjaxResult.error("缁戝畾澶辫触锛�"); + } + } -- Gitblit v1.8.0