From 20b3b1a91bb9d7daf7bbf242b8f6aeae2be6b491 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 21 十一月 2024 14:38:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 11 - ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java | 203 ++++++++++++++++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WxPKCS7Encoder.java | 63 +++++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/IAgreementService.java | 11 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/AgreementServiceImpl.java | 15 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/AgreementMapper.xml | 5 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/model/Agreement.java | 38 +++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/AES.java | 72 ++++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/AppletLogin.java | 20 + ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml | 104 ++++---- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java | 41 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/AgreementMapper.java | 11 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WXCore.java | 48 ++++ 13 files changed, 551 insertions(+), 91 deletions(-) diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/model/Agreement.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/model/Agreement.java new file mode 100644 index 0000000..84c98da --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/model/Agreement.java @@ -0,0 +1,38 @@ +package com.ruoyi.other.api.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** 协议 + * @author zhibing.pu + * @Date 2024/11/21 10:44 + */ +@Data +@TableName("t_agreement") +public class Agreement { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 类型(1=用户协议,2=隐私协议,3=技师上门免责声明,4=注销协议,5门店提现免责声明) + */ + @TableField("type") + private Integer type; + /** + * 协议内容 + */ + @TableField("content") + private String content; + /** + * 添加时间 + */ + @TableField("create_time") + private LocalDateTime createTime; +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 1d2b67a..e69de29 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,11 +0,0 @@ -com.ruoyi.other.api.factory.OtherFallbackFactory -com.ruoyi.other.api.factory.UserSiteFallbackFactory -com.ruoyi.other.api.factory.RoleSiteFallbackFactory -com.ruoyi.other.api.factory.TEvaluationTagFallbackFactory -com.ruoyi.other.api.factory.VipFallbackFactory -com.ruoyi.other.api.factory.IntegralRuleFallbackFactory -com.ruoyi.other.api.factory.GoodsFallbackFactory -com.ruoyi.other.api.factory.CouponFallbackFactory -com.ruoyi.other.api.factory.InvoiceTypeFallbackFactory -com.ruoyi.other.api.factory.WebSocketFallbackFactory -com.ruoyi.other.api.factory.UserTagFallbackFactory \ No newline at end of file diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/AES.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/AES.java new file mode 100644 index 0000000..ecfd2f0 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/AES.java @@ -0,0 +1,72 @@ +package com.ruoyi.account.util.weChat; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.security.*; + +/** +* AES加密 +* @author pzb +* @Date 2021/12/3 15:43 +*/ +public class AES { + + public static boolean initialized = false; + + /** + * AES解密 + * + * @param content + * 密文 + * @return + * @throws InvalidAlgorithmParameterException + * @throws NoSuchProviderException + */ + public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { + initialize(); + try { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); + Key sKeySpec = new SecretKeySpec(keyByte, "AES"); + cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 + byte[] result = cipher.doFinal(content); + return result; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } catch (NoSuchProviderException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void initialize() { + if (initialized) + return; + Security.addProvider(new BouncyCastleProvider()); + initialized = true; + } + + // 生成iv + public static AlgorithmParameters generateIV(byte[] iv) throws Exception { + AlgorithmParameters params = AlgorithmParameters.getInstance("AES"); + params.init(new IvParameterSpec(iv)); + return params; + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WXCore.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WXCore.java new file mode 100644 index 0000000..3b1dc3c --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WXCore.java @@ -0,0 +1,48 @@ +package com.ruoyi.account.util.weChat; + +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Value; + +public class WXCore { + + private static final String WATERMARK = "watermark"; + + @Value("${wx.appletsAppid}") + private static String appid ; + + + + /** + * 解密数据 + * @return + * @throws Exception + */ + public static String decrypt(String encryptedData, String sessionKey, String iv){ + String result = ""; + try { + AES aes = new AES(); + byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv)); + if(null != resultByte && resultByte.length > 0){ + result = new String(WxPKCS7Encoder.decode(resultByte), "UTF-8"); +// JSONObject jsonObject = JSON.parseObject(result); +// String decryptAppid = jsonObject.getJSONObject(WATERMARK).getString("appid"); +// if(!appid.equals(decryptAppid)){ +// result = ""; +// } + } + } catch (Exception e) { + result = ""; + e.printStackTrace(); + } + return result; + } + + + public static void main(String[] args) throws Exception{ + String appId = "wx4f4bc4dec97d474b"; + String encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew=="; + String sessionKey = "tiihtNczf5v6AKRyjwEUhQ=="; + String iv = "r7BXXKkLb8qrSNn05n0qiA=="; + System.out.println(decrypt(encryptedData, sessionKey, iv)); + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java new file mode 100644 index 0000000..7322624 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java @@ -0,0 +1,203 @@ +package com.ruoyi.account.util.weChat; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +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 WeChatUtil { + + @Value("${wx.appletsAppid}") + private String wxAppletsAppid; + + @Value("${wx.appletsAppSecret}") + private String wxAppletsAppSecret; + + @Value("{wx.officialAccountAppSecret}") + private String officialAccountAppSecret; + + @Value("${wx.appid}") + private String webAppId; + + @Value("${wx.appSecret}") + private String webAppSecret; + + + /** + * 小程序使用jscode获取openid + * @param jscode + * @return + */ + public Map<String, Object> code2Session(String jscode) throws Exception{ + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret + + "&js_code=" + jscode + "&grant_type=authorization_code"; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + int status = response.getStatus(); + if(200 != status){ + throw new RuntimeException(response.body()); + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, Object> map = new HashMap<>(); + map.put("errcode", errcode); + if(errcode == 0){//成功 + map.put("openid", jsonObject.getString("openid")); + map.put("sessionKey", jsonObject.getString("session_key")); + map.put("unionid", jsonObject.getString("unionid")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return null; + } + + + /** + * 获取微信小程序token + * @return + */ + public String getWxAppletsAccessToken() throws Exception{ + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return ""; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + return jsonObject.getString("access_token"); + } + + + /** + * 网站应用登录 + * @param code + * @return + */ + public Map<String, String> webAccessToken(String code) throws Exception{ + String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + webAppId + "&secret=" + webAppSecret + "&code=" + code + "&grant_type=authorization_code"; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return null; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, String> map = new HashMap<>(); + if(errcode == 0){//成功 + map.put("access_token", jsonObject.getString("access_token")); + map.put("openid", jsonObject.getString("openid")); + map.put("refresh_token", jsonObject.getString("refresh_token")); + map.put("unionid", jsonObject.getString("unionid")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return map; + } + + + /** + * 获取微信个人信息 + * @param access_token + * @param openid + * @return + */ + public Map<String, Object> getUserInfo(String access_token, String openid) throws Exception{ + String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return null; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, Object> map = new HashMap<>(); + if(errcode == 0){//成功 + map.put("nickname", jsonObject.getString("nickname")); + map.put("openid", jsonObject.getString("openid")); + map.put("sex", jsonObject.getString("sex")); + map.put("headimgurl", jsonObject.getString("headimgurl")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return map; + } + + + + +// /** +// * 获取小程序二维码 +// * @param page 跳转页 例如 pages/index/index +// * @param scene 参数 a=1&b=2 +// */ +// public InputStream getwxacodeunlimit(String page, String scene){ +// try { +// String token = getWxAppletsAccessToken(); +// if(StringUtils.isEmpty(token)){ +// System.err.println("获取接口调用凭证失败"); +// } +// String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; +// Map<String, Object> param = new HashMap<>(); +// param.put("scene", scene); +// param.put("page", page); +// HttpHeaders httpHeaders = new HttpHeaders(); +// MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8"); +// httpHeaders.setContentType(type); +// HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders); +// ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]); +// String body1 = exchange.getBody(); +//// System.err.println(body1); +// ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); +// byte[] body = entity.getBody(); +//// System.err.println(Base64.encodeBase64String(body)); +// return new ByteArrayInputStream(body); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// return null; +// } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WxPKCS7Encoder.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WxPKCS7Encoder.java new file mode 100644 index 0000000..3788ff8 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WxPKCS7Encoder.java @@ -0,0 +1,63 @@ +package com.ruoyi.account.util.weChat; + +import java.nio.charset.Charset; +import java.util.Arrays; + +/** +* 微信小程序加解密 +* @author pzb +* @Date 2021/12/3 15:43 +*/ +public class WxPKCS7Encoder { + private static final Charset CHARSET = Charset.forName("utf-8"); + private static final int BLOCK_SIZE = 32; + + /** + * 获得对明文进行补位填充的字节. + * + * @param count + * 需要进行填充补位操作的明文字节个数 + * @return 补齐用的字节数组 + */ + public static byte[] encode(int count) { + // 计算需要填充的位数 + int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); + if (amountToPad == 0) { + amountToPad = BLOCK_SIZE; + } + // 获得补位所用的字符 + char padChr = chr(amountToPad); + String tmp = new String(); + for (int index = 0; index < amountToPad; index++) { + tmp += padChr; + } + return tmp.getBytes(CHARSET); + } + + /** + * 删除解密后明文的补位字符 + * + * @param decrypted + * 解密后的明文 + * @return 删除补位字符后的明文 + */ + public static byte[] decode(byte[] decrypted) { + int pad = decrypted[decrypted.length - 1]; + if (pad < 1 || pad > 32) { + pad = 0; + } + return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); + } + + /** + * 将数字转化成ASCII码对应的字符,用于对明文进行补码 + * + * @param a + * 需要转化的数字 + * @return 转化得到的字符 + */ + public static char chr(int a) { + byte target = (byte) (a & 0xFF); + return (char) target; + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/AppletLogin.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/AppletLogin.java new file mode 100644 index 0000000..0c53922 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/AppletLogin.java @@ -0,0 +1,20 @@ +package com.ruoyi.account.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2024/11/21 11:40 + */ +@Data +@ApiModel +public class AppletLogin { + @ApiModelProperty(value = "微信jscode", required = true) + private String jscode; + @ApiModelProperty(value = "手机号加密数据", required = true) + private String encryptedData_phone; + @ApiModelProperty(value = "加密算法的初始向量", required = true) + private String iv_phone; +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java index 66cca28..d6d43c6 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/AgreementController.java @@ -1,20 +1,41 @@ package com.ruoyi.other.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.other.api.model.Agreement; +import com.ruoyi.other.service.IAgreementService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; /** - * <p> - * 前端控制器 - * </p> - * - * @author luodangjia - * @since 2024-11-20 + * @author zhibing.pu + * @Date 2024/11/21 10:48 */ @RestController @RequestMapping("/agreement") public class AgreementController { - + + @Resource + private IAgreementService agreementService; + + + /** + * 获取协议详情 + * @param type + * @return + */ + @ResponseBody + @GetMapping("/getAgreement/{type}") + @ApiOperation(value = "获取协议", tags = {"小程序-登录注册"}) + @ApiImplicitParams({ + @ApiImplicitParam(value = "类型(1=用户协议,2=隐私协议,3=技师上门免责声明,4=注销协议,5门店提现免责声明)", name = "type", required = true, dataType = "int"), + }) + public AjaxResult<String> getAgreement(@PathVariable("type") Integer type){ + Agreement one = agreementService.getOne(new LambdaQueryWrapper<Agreement>().eq(Agreement::getType, type)); + return AjaxResult.success(null == one ? "" : one.getContent()); + } } - diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/AgreementMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/AgreementMapper.java index 6bc26da..862d725 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/AgreementMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/AgreementMapper.java @@ -1,16 +1,11 @@ package com.ruoyi.other.mapper; -import com.ruoyi.other.api.domain.Agreement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.other.api.model.Agreement; /** - * <p> - * Mapper 接口 - * </p> - * - * @author luodangjia - * @since 2024-11-20 + * @author zhibing.pu + * @Date 2024/11/21 10:46 */ public interface AgreementMapper extends BaseMapper<Agreement> { - } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/IAgreementService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/IAgreementService.java new file mode 100644 index 0000000..efbe659 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/IAgreementService.java @@ -0,0 +1,11 @@ +package com.ruoyi.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.other.api.model.Agreement; + +/** + * @author zhibing.pu + * @Date 2024/11/21 10:46 + */ +public interface IAgreementService extends IService<Agreement> { +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/AgreementServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/AgreementServiceImpl.java index b3a3887..75ad805 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/AgreementServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/AgreementServiceImpl.java @@ -1,20 +1,15 @@ package com.ruoyi.other.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.other.api.model.Agreement; import com.ruoyi.other.mapper.AgreementMapper; -import com.ruoyi.other.api.domain.Agreement; -import com.ruoyi.other.service.AgreementService; +import com.ruoyi.other.service.IAgreementService; import org.springframework.stereotype.Service; /** - * <p> - * 服务实现类 - * </p> - * - * @author luodangjia - * @since 2024-11-20 + * @author zhibing.pu + * @Date 2024/11/21 10:48 */ @Service -public class AgreementServiceImpl extends ServiceImpl<AgreementMapper, Agreement> implements AgreementService { - +public class AgreementServiceImpl extends ServiceImpl<AgreementMapper, Agreement> implements IAgreementService { } diff --git a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml index 708311f..4a30605 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml @@ -43,69 +43,69 @@ shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- -seata: - enabled: true - application-id: ${spring.application.name} - tx-service-group: seata_tx_group #此处配置自定义的seata事务分组名称 - enable-auto-data-source-proxy: false #关闭数据库代理 - service: - vgroup-mapping: - seata_tx_group: default - data-source-proxy-mode: AT - config: - type: nacos - nacos: - # 开发环境 - server-addr: 127.0.0.1:8848 - namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 - group: DEFAULT_GROUP - data-id: seata-server.properties - username: nacos - password: nacos - # 生产环境 -# server-addr: 192.168.0.137:8848,192.168.0.123:8848 -# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +#seata: +# enabled: true +# application-id: ${spring.application.name} +# tx-service-group: seata_tx_group #此处配置自定义的seata事务分组名称 +# enable-auto-data-source-proxy: false #关闭数据库代理 +# service: +# vgroup-mapping: +# seata_tx_group: default +# data-source-proxy-mode: AT +# config: +# type: nacos +# nacos: +# # 开发环境 +# server-addr: 127.0.0.1:8848 +# namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 # group: DEFAULT_GROUP # data-id: seata-server.properties # username: nacos # password: nacos - registry: - type: nacos - nacos: - application: seata-server - # 开发环境 - server-addr: 127.0.0.1:8848 - namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 - group: DEFAULT_GROUP - username: nacos - password: nacos - # 生产环境 -# server-addr: 192.168.0.137:8848,192.168.0.123:8848 -# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# # 生产环境 +## server-addr: 192.168.0.137:8848,192.168.0.123:8848 +## namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +## group: DEFAULT_GROUP +## data-id: seata-server.properties +## username: nacos +## password: nacos +# registry: +# type: nacos +# nacos: +# application: seata-server +# # 开发环境 +# server-addr: 127.0.0.1:8848 +# namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 # group: DEFAULT_GROUP # username: nacos # password: nacos - cloud: - nacos: - discovery: - # 开发环境 - server-addr: 127.0.0.1:8848 # nacos注册中心地址 - namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 # 命名空间 - group: DEFAULT_GROUP - application: seata-server #Nacos 中 Seata 名称 - username: nacos - password: nacos - # 生产环境 -# server-addr: 192.168.0.137:8848,192.168.0.123:8848 -# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# # 生产环境 +## server-addr: 192.168.0.137:8848,192.168.0.123:8848 +## namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +## group: DEFAULT_GROUP +## username: nacos +## password: nacos +# cloud: +# nacos: +# discovery: +# # 开发环境 +# server-addr: 127.0.0.1:8848 # nacos注册中心地址 +# namespace: cdf47c5f-2bf9-4dec-a616-a8dc653aceb9 # 命名空间 # group: DEFAULT_GROUP # application: seata-server #Nacos 中 Seata 名称 # username: nacos # password: nacos - sentinel: - transport: - dashboard: 127.0.0.1:8080 # Sentinel控制台地址 - eager: true +# # 生产环境 +## server-addr: 192.168.0.137:8848,192.168.0.123:8848 +## namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +## group: DEFAULT_GROUP +## application: seata-server #Nacos 中 Seata 名称 +## username: nacos +## password: nacos +# sentinel: +# transport: +# dashboard: 127.0.0.1:8080 # Sentinel控制台地址 +# eager: true --- spring: config: diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/AgreementMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/AgreementMapper.xml new file mode 100644 index 0000000..9da20bc --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/AgreementMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.other.mapper.AgreementMapper"> + +</mapper> \ No newline at end of file -- Gitblit v1.7.1