diff --git a/playlet-admin/src/main/java/com/playlet/web/controller/tool/WxController.java b/playlet-admin/src/main/java/com/playlet/web/controller/tool/WxController.java index 04475d4..1a6f6f8 100644 --- a/playlet-admin/src/main/java/com/playlet/web/controller/tool/WxController.java +++ b/playlet-admin/src/main/java/com/playlet/web/controller/tool/WxController.java @@ -24,6 +24,15 @@ public class WxController { private final WxService wxService; + @ApiOperation(value = "校验用户是否已经关注了公众号", httpMethod = "POST") + @PostMapping("checkKeepStatusByOpenId") + @ResponseBody + private Result checkKeepStatusByOpenId(@RequestParam(value = "openId") String openId, + @RequestParam(value = "appId") String appId, + @RequestParam(value = "secret") String secret) { + return Result.success(wxService.checkKeepStatusByOpenId(openId, appId, secret)); + } + @ApiOperation(value = "获取openId", httpMethod = "POST") @PostMapping("/getOpenidByCode") @ResponseBody diff --git a/playlet-admin/src/main/java/com/playlet/web/service/WxService.java b/playlet-admin/src/main/java/com/playlet/web/service/WxService.java index a4d4182..a03b4d6 100644 --- a/playlet-admin/src/main/java/com/playlet/web/service/WxService.java +++ b/playlet-admin/src/main/java/com/playlet/web/service/WxService.java @@ -22,4 +22,6 @@ public interface WxService { String getCompanyByUserId(String userTicket); + Boolean checkKeepStatusByOpenId(String openId, String appId, String secret); + } diff --git a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PlayletPublicUserAppServiceImpl.java b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PlayletPublicUserAppServiceImpl.java index 7c30a7c..129ebcb 100644 --- a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PlayletPublicUserAppServiceImpl.java +++ b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PlayletPublicUserAppServiceImpl.java @@ -1,7 +1,12 @@ package com.playlet.web.service.app.impl; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.playlet.common.utils.StringUtils; +import com.playlet.common.utils.http.HttpUtils; import com.playlet.system.domain.PlayletPublicUser; import com.playlet.system.service.IPlayletPublicUserService; +import com.playlet.web.service.WxService; import com.playlet.web.service.app.PlayletPublicUserAppService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,6 +23,8 @@ public class PlayletPublicUserAppServiceImpl implements PlayletPublicUserAppServ private final IPlayletPublicUserService iPlayletPublicUserService; + private final WxService wxService; + @Override public PlayletPublicUser addPublicUser(PlayletPublicUser publicUser) { iPlayletPublicUserService.insertPlayletPublicUser(publicUser); @@ -31,6 +38,21 @@ public class PlayletPublicUserAppServiceImpl implements PlayletPublicUserAppServ .eq(PlayletPublicUser::getUnionId, publicUser.getUnionId()) .list(); if(CollectionUtils.isNotEmpty(list)){ + // 判断用户是否关注公众号 + if(StringUtils.isNotEmpty(list.get(0).getOpenId())){ + String accessToken = wxService.getAccessToken(); + String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + accessToken + "&openid=" + list.get(0).getOpenId() + "&lang=zh_CN"; + log.info("调用微信获取用户信息,入参url:{}", url); + String result = HttpUtils.sendGet(url); + log.info("调用微信获取用户信息,响应内容:{}", result); + // 是否关注公众号 + String watchPublic = JSONObject.parseObject(result).getString("subscribe"); + if(!watchPublic.equals(list.get(0).getWatchPublic())){ + list.get(0).setWatchPublic(watchPublic); + // 将状态更新到表中 + iPlayletPublicUserService.updateById(list.get(0)); + } + } return list.get(0); } return null; diff --git a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicDetailShareAppServiceImpl.java b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicDetailShareAppServiceImpl.java index 5503cc7..90dbf9c 100644 --- a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicDetailShareAppServiceImpl.java +++ b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicDetailShareAppServiceImpl.java @@ -61,11 +61,11 @@ public class PublicDetailShareAppServiceImpl implements PublicDetailShareAppServ }else { playletPublicDetail.setTransmitCount(playletPublicDetail.getTransmitCount() + 1); } - if(playletPublicDetail.getReadCount() == null){ - playletPublicDetail.setReadCount(1L); - }else { - playletPublicDetail.setReadCount(playletPublicDetail.getReadCount() + 1); - } +// if(playletPublicDetail.getReadCount() == null){ +// playletPublicDetail.setReadCount(1L); +// }else { +// playletPublicDetail.setReadCount(playletPublicDetail.getReadCount() + 1); +// } iPlayletPublicDetailService.updateById(playletPublicDetail); } } diff --git a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicUserRecordAppServiceImpl.java b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicUserRecordAppServiceImpl.java index fa4a68b..e5624f0 100644 --- a/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicUserRecordAppServiceImpl.java +++ b/playlet-admin/src/main/java/com/playlet/web/service/app/impl/PublicUserRecordAppServiceImpl.java @@ -1,5 +1,6 @@ package com.playlet.web.service.app.impl; +import com.playlet.system.domain.PlayletPublicDetail; import com.playlet.system.domain.PublicUserRecord; import com.playlet.system.service.IPlayletPublicDetailService; import com.playlet.system.service.IPublicUserRecordService; @@ -21,6 +22,16 @@ public class PublicUserRecordAppServiceImpl implements PublicUserRecordAppServic @Override public void addRecord(PublicUserRecord userRecord) { iPublicUserRecordService.insertPublicUserRecord(userRecord); + // 添加浏览记录时,同时需要增加一下文章表上面的阅读次数 + PlayletPublicDetail playletPublicDetail = iPlayletPublicDetailService.getById(Long.valueOf(userRecord.getRemark())); + if(playletPublicDetail != null){ + if(playletPublicDetail.getReadCount() == null){ + playletPublicDetail.setReadCount(1L); + }else { + playletPublicDetail.setReadCount(playletPublicDetail.getReadCount() + 1); + } + iPlayletPublicDetailService.updateById(playletPublicDetail); + } } @Override diff --git a/playlet-admin/src/main/java/com/playlet/web/service/impl/WxServiceImpl.java b/playlet-admin/src/main/java/com/playlet/web/service/impl/WxServiceImpl.java index f11f12d..ed2fb81 100644 --- a/playlet-admin/src/main/java/com/playlet/web/service/impl/WxServiceImpl.java +++ b/playlet-admin/src/main/java/com/playlet/web/service/impl/WxServiceImpl.java @@ -27,7 +27,13 @@ public class WxServiceImpl implements WxService { @Override public String getAccessToken() { - String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxConfig.getAppId() + "&secret=" + wxConfig.getSecret(); + String accessTokenResult = HttpUtils.sendGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx2b7d9259c1188067&secret=919165aae35838480986555f6c03ae6f"); + log.info("accessTokenResult : {} ", accessTokenResult); + return JSONObject.parseObject(accessTokenResult).getString("access_token"); + } + + private String getAccessToken(String appid, String secret) { + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; log.info("调用微信获取access_token,入参url:{}", url); String result = HttpUtils.sendGet(url); log.info("调用微信获取access_token,响应内容:{}", result); @@ -91,6 +97,20 @@ public class WxServiceImpl implements WxService { return result.body(); } + @Override + public Boolean checkKeepStatusByOpenId(String openId, String appId, String secret) { + String accessToken = this.getAccessToken(appId, secret); + String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN"; + log.info("调用微信获取用户信息,校验是否关注微信公众号,入参url:{}", url); + String result = HttpUtils.sendGet(url); + log.info("调用微信获取用户信息,校验是否关注微信公众号,响应内容:{}", result); + JSONObject json = JSONObject.parseObject(result); + if(json.containsKey(PlayletConstants.SUBSCRIBE)){ + return "1".equals(json.getString(PlayletConstants.SUBSCRIBE)); + } + return false; + } + @Override public String getOpenidByCode(String code, String appId, String secret) { String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code"; diff --git a/playlet-admin/src/main/resources/application.yml b/playlet-admin/src/main/resources/application.yml index f347d7e..6b2afc7 100644 --- a/playlet-admin/src/main/resources/application.yml +++ b/playlet-admin/src/main/resources/application.yml @@ -30,7 +30,8 @@ server: max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 - + max-http-form-post-size: 104857600 + # 日志配置 logging: level: @@ -78,9 +79,9 @@ spring: servlet: multipart: # 单个文件大小 - max-file-size: 50MB + max-file-size: 500MB # 设置总上传的文件大小 - max-request-size: 100MB + max-request-size: 1000MB # 服务模块 devtools: restart: diff --git a/playlet-admin/src/main/resources/templates/system/playlet/detail/changeImg.html b/playlet-admin/src/main/resources/templates/system/playlet/detail/changeImg.html new file mode 100644 index 0000000..07b7a4c --- /dev/null +++ b/playlet-admin/src/main/resources/templates/system/playlet/detail/changeImg.html @@ -0,0 +1,261 @@ + + + + + + + + +
+
+
+ +
+
+ + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/playlet-common/src/main/java/com/playlet/common/constant/PlayletConstants.java b/playlet-common/src/main/java/com/playlet/common/constant/PlayletConstants.java index efcc8e0..ed69f7a 100644 --- a/playlet-common/src/main/java/com/playlet/common/constant/PlayletConstants.java +++ b/playlet-common/src/main/java/com/playlet/common/constant/PlayletConstants.java @@ -12,6 +12,9 @@ public class PlayletConstants { /** 微信OpenId返回格式 */ public static final String OPEN_ID = "openid"; + /** 微信公众号订阅状态 */ + public static final String SUBSCRIBE = "subscribe"; + /** 小程序用户初始默认创建人 */ public static final String DEFAULT_CREATE = "system"; diff --git a/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicUser.java b/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicUser.java index faa64c4..171544a 100644 --- a/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicUser.java +++ b/playlet-system/src/main/java/com/playlet/system/domain/PlayletPublicUser.java @@ -39,8 +39,13 @@ public class PlayletPublicUser extends BaseEntity @Excel(name = "微信unionId") private String unionId; + @Excel(name = "微信openId") + private String openId; + /** 头像 */ @Excel(name = "头像") private String imgUrl; + /** 是否关注公众号 0.否 1.是 */ + private String watchPublic; } diff --git a/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml b/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml index c4da266..351df5b 100644 --- a/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml +++ b/playlet-system/src/main/resources/mapper/system/PlayletPublicDetailMapper.xml @@ -45,8 +45,16 @@ update_by, update_time, detail_tag, remark, address, transmit_count from playlet_public_detail + + select id, public_id, item_id, head_url, read_count,star_count, + item_one,item_two,item_three,item_four,item_five,top_status, + item_six,item_seven,item_eight,item_nine,item_ten, + title,type,author_alias,img_url, create_by, create_time, + update_by, update_time, detail_tag, remark, address, transmit_count from playlet_public_detail + + @@ -42,6 +43,7 @@ public_id, name, union_id, + open_id, img_url, create_by, create_time, @@ -53,6 +55,7 @@ #{publicId}, #{name}, #{unionId}, + #{openId}, #{imgUrl}, #{createBy}, #{createTime}, @@ -68,6 +71,7 @@ public_id = #{publicId}, name = #{name}, union_id = #{unionId}, + open_id = #{openId}, img_url = #{imgUrl}, create_by = #{createBy}, create_time = #{createTime},