Browse Source

微信小程序提审前校验并设置用户隐私设置

feature/teamB_zz_wgh
jianjun 3 years ago
parent
commit
3417f431ad
  1. 10
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  2. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java
  3. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java
  4. 47
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java

10
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java

@ -3,6 +3,8 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -309,6 +311,14 @@ public class CodeServiceImpl implements CodeService {
if (null == authInfo) {
throw new RenException("未授权");
}
//校验小程序是否设置了用户隐私 如果没有设置则执行设置后 再发布
WxResult<String> privacySetting = wxMaCodeService.getPrivacySetting(authInfo.getAuthorizerAccessToken());
if (!privacySetting.success()){
WxResult<String> stringWxResult = wxMaCodeService.setPrivacySetting(authInfo.getAuthorizerAccessToken());
if (!stringWxResult.success()){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),stringWxResult.getErrorMsg(),"用户隐私权限设置失败");
}
}
//获取上传代码信息
CodeCustomerDTO uploadCode = codeCustomerService.getUploadCodeByCustomer(formDTO.getCodeId(), codeCustomerDTO.getCustomerId(),
codeCustomerDTO.getClientType());

12
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java

@ -200,4 +200,16 @@ public interface WxMaCodeConstant {
* 获取代码草稿列表
*/
String DELETE_TEMPLATE_URL = "https://api.weixin.qq.com/wxa/deletetemplate";
/**
* 获取用户隐私地址
* @see https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/privacy_config/set_privacy_setting.html
*/
String GET_PRIVACY_SETTING_URL = "https://api.weixin.qq.com/cgi-bin/component/getprivacysetting";
/**
* 设置用户隐私地址
* @see https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/privacy_config/set_privacy_setting.html
*/
String SET_PRIVACY_SETTING_URL = "https://api.weixin.qq.com/cgi-bin/component/setprivacysetting";
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java

@ -72,6 +72,22 @@ public interface WxMaCodeService {
*/
WxResult<String> submitAudit(String accessToken, WxMaCodeSubmitAuditRequest auditRequest);
/**
* 获取用户隐私接口权限.
*
* @param accessToken 小程序对应的accessToken
* @return 审核编号
*/
WxResult<String> getPrivacySetting(String accessToken);
/**
* 设置用户隐私接口权限.
*
* @param accessToken 小程序对应的accessToken
* @return 审核编号
*/
WxResult<String> setPrivacySetting(String accessToken);
/**
* 加急审核申请
* @author zhaoqifeng

47
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java

@ -1,5 +1,7 @@
package com.epmet.wxapi.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.HttpClientManager;
@ -36,6 +38,7 @@ import java.util.Map;
public class WxMaCodeServiceImpl implements WxMaCodeService {
private static final String ERR_CODE = "errcode";
private static final String ERR_MSG = "errmsg";
private static final String SETTING_LIST = "setting_list";
@Autowired
private WxMaDomainDTO wxMaDomainDTO;
@ -150,6 +153,50 @@ public class WxMaCodeServiceImpl implements WxMaCodeService {
return result;
}
@Override
public WxResult<String> getPrivacySetting(String accessToken) {
WxResult<String> result = new WxResult<>();
String url = WxMaCodeConstant.SET_PRIVACY_SETTING_URL + "?" + "access_token=" + accessToken;
Result<String> submitResult = HttpClientManager.getInstance().sendPostByJSON(url, "{}");
log.info("getPrivacySetting result:{}", JSON.toJSONString(submitResult));
if (!submitResult.success()) {
result.setErrorCode(submitResult.getCode());
result.setErrorMsg(submitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(submitResult.getData());
JSONArray jsonArray = jsonObject.getJSONArray(SETTING_LIST);
if (jsonArray.size() == 9){
result.setErrorCode(9999);
result.setErrorMsg("用户隐私权限未设置或设置不完整");
return result;
}
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE)));
return result;
}
@Override
public WxResult setPrivacySetting(String accessToken) {
//todo 目前设置9个隐私权限
String param = "{\"owner_setting\":{\"contact_email\":\"eshitong@elink-cn.com\",\"contact_phone\":\"\",\"contact_qq\":\"\",\"contact_weixin\":\"\",\"ext_file_media_id\":\"\",\"notice_method\":\"通知\",\"store_expire_timestamp\":\"\"},\"setting_list\":[{\"privacy_key\":\"UserInfo\",\"privacy_text\":\"用户个人中心显示用户头像及昵称等\"},{\"privacy_key\":\"Location\",\"privacy_text\":\"发表话题等功能时获取位置信息\"},{\"privacy_key\":\"Record\",\"privacy_text\":\"录音发话题等\"},{\"privacy_key\":\"Album\",\"privacy_text\":\"上传照片发话题等\"},{\"privacy_key\":\"AlbumWriteOnly\",\"privacy_text\":\"下载党建声音图片或项目附近等\"},{\"privacy_key\":\"Camera\",\"privacy_text\":\"通过相机拍照发话题反应问题等\"},{\"privacy_key\":\"PhoneNumber\",\"privacy_text\":\"通过手机号为用户开通账号,更新用户基础信息\"},{\"privacy_key\":\"MessageFile\",\"privacy_text\":\"发表话题等可以选择文件上传\"},{\"privacy_key\":\"ChooseLocation\",\"privacy_text\":\"用户巡查上报\"}],\"privacy_ver\":2}\n";
WxResult<String> result = new WxResult<>();
String url = WxMaCodeConstant.SET_PRIVACY_SETTING_URL + "?" + "access_token=" + accessToken;
Result<String> submitResult = HttpClientManager.getInstance().sendPostByJSON(url, param);
log.info("setPrivacySetting param:{}, result:{}", param, JSON.toJSONString(submitResult));
if (!submitResult.success()) {
result.setErrorCode(submitResult.getCode());
result.setErrorMsg(submitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(submitResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE)));
return result;
}
@Override
public WxResult speedUpAudit(String accessToken, WxMaSpeedUpAuditReq request) {
WxResult result = new WxResult();

Loading…
Cancel
Save