Browse Source

1、添加二维码推广接口

2、用户信息相关接口修改(新增,修改,查询)
master
Aug 6 months ago
parent
commit
835cd765e2
8 changed files with 1433 additions and 16 deletions
  1. +39
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/carrentController/RecommendController.java
  2. +2
    -12
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/carrentController/UserController.java
  3. +1122
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/HttpClientUtil.java
  4. +14
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WxQrCodeVo.java
  5. +14
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/RecommendService.java
  6. +1
    -2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/UserService.java
  7. +213
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/RecommendServiceImpl.java
  8. +28
    -2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserServiceImpl.java

+ 39
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/carrentController/RecommendController.java View File

@ -0,0 +1,39 @@
package org.jeecg.modules.api.carrentController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.apiService.RecommendService;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags="我的推荐相关接口")
@RestController
@RequestMapping("/api/recommend")
@Slf4j
public class RecommendController {
//推荐信息
@Resource
private RecommendService recommendService;
/****************************************************************************************************/
@ApiOperation(value="我的推荐-获取个人邀请码", notes="我的推荐-获取个人邀请码")
@RequestMapping(value = "/getInviteCode", method = {RequestMethod.GET})
public Result<?> getInviteCode(@RequestHeader("X-Access-Token") String token){
return recommendService.getInviteCode(token);
}
@ApiOperation(value="我的推荐-获取推荐用户信息", notes="我的推荐-获取推荐用户信息")
@RequestMapping(value = "/getInviteUser", method = {RequestMethod.GET})
public Result<?> getInviteUser(@RequestHeader("X-Access-Token") String token){
return recommendService.getInviteCode(token);
}
}

+ 2
- 12
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/carrentController/UserController.java View File

@ -28,19 +28,11 @@ public class UserController {
@ApiOperation(value="用户信息-查询个人信息", notes="用户信息-查询个人信息") @ApiOperation(value="用户信息-查询个人信息", notes="用户信息-查询个人信息")
@RequestMapping(value = "/queryUser", method = {RequestMethod.POST}) @RequestMapping(value = "/queryUser", method = {RequestMethod.POST})
public Result<?> queryUser(@RequestHeader("X-Access-Token") String token, String id){
public Result<?> queryUser(@RequestHeader("X-Access-Token") String token){
String message = "查询个人信息失败"; String message = "查询个人信息失败";
//注册信息验证 //注册信息验证
if(StringUtils.isEmpty(id)){
message = "用户id未填写,请填写用户id!";
}else {
//注册信息无误进入业务流程处理
return userService.queryUser(token, id);
}
//注册信息有误返回错误信息
return Result.error(message);
return userService.queryUser(token);
} }
@ApiOperation(value="用户信息-个人注册", notes="用户信息-个人注册") @ApiOperation(value="用户信息-个人注册", notes="用户信息-个人注册")
@ -94,8 +86,6 @@ public class UserController {
message = "联系方式未填写,请填写联系方式!"; message = "联系方式未填写,请填写联系方式!";
}else if(StringUtils.isEmpty(carrentUser.getCerImage())){ }else if(StringUtils.isEmpty(carrentUser.getCerImage())){
message = "身份证正面照片未填写,请上传身份证正面照片!"; message = "身份证正面照片未填写,请上传身份证正面照片!";
}else if(StringUtils.isEmpty(carrentUser.getId())){
message = "用户编号未填写,请填写用户编号!";
}else { }else {
//注册信息无误进入业务流程处理 //注册信息无误进入业务流程处理
return userService.updateUser(token, carrentUser); return userService.updateUser(token, carrentUser);


+ 1122
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/HttpClientUtil.java
File diff suppressed because it is too large
View File


+ 14
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WxQrCodeVo.java View File

@ -0,0 +1,14 @@
package org.jeecg.modules.apiBean;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class WxQrCodeVo {
/**图片地址*/
@ApiModelProperty(value = "图片地址")
private String url;
@ApiModelProperty(value = "加油站名称")
private String name;
}

+ 14
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/RecommendService.java View File

@ -0,0 +1,14 @@
package org.jeecg.modules.apiService;
import org.jeecg.common.api.vo.Result;
public interface RecommendService {
/**
* 获取个人推荐二维码
* @param token
* @return
*/
public Result<?> getInviteCode(String token);
}

+ 1
- 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/UserService.java View File

@ -8,10 +8,9 @@ public interface UserService {
/** /**
* 用户信息-查询个人信息 * 用户信息-查询个人信息
* @param token * @param token
* @param id 用户编号
* @return * @return
*/ */
public Result<?> queryUser(String token, String id);
public Result<?> queryUser(String token);
/** /**
* 用户信息-个人注册 * 用户信息-个人注册


+ 213
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/RecommendServiceImpl.java View File

@ -0,0 +1,213 @@
package org.jeecg.modules.apiService.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.jeecg.common.api.vo.Result;
import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.apiBean.HttpClientUtil;
import org.jeecg.modules.apiBean.WxQrCodeVo;
import org.jeecg.modules.apiService.RecommendService;
import org.jeecg.modules.carrentConfig.entity.CarrentConfig;
import org.jeecg.modules.carrentConfig.service.ICarrentConfigService;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
@Service
public class RecommendServiceImpl implements RecommendService {
/*************************************************************************************/
//权限验证
@Resource
private ShiroRealm shiroRealm;
//配置信息
@Resource
private ICarrentConfigService carrentConfigService;
private String appid = "wx1c95690b8180a150";//小程序appid
private String secret = "7a686fb5308cca9ac0bc8cab14130cee";//小程序密钥
private String endpoint = "oss-cn-guangzhou.aliyuncs.com";
private String accessKey = "LTAI5tPfZo39q2r9Sr5mW84u";
private String secretKey = "XxExGallsV4O9nERHpVsQg2XtPCU7r";
private String bucketName = "augcl";
/*************************************************************************************/
//获取个人推荐二维码
@Override
public Result<?> getInviteCode(String token) {
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//获取版本信息
CarrentConfig vsion = carrentConfigService.lambdaQuery()
.eq(CarrentConfig::getParamCode, "v_sion")
.one();
Integer vsionStr = Integer.parseInt(vsion.getParamValue());
String trial = "release";
if(vsionStr == 0){
trial= "release";
}else if(vsionStr == 1){
trial= "trial";
}else{
trial= "develop";
}
Map<String, Object> param = new HashMap<>();
//获取跳转路径信息
CarrentConfig xcxSharePage = carrentConfigService.lambdaQuery()
.eq(CarrentConfig::getParamCode, "xcxSharePage")
.one();
String key = "shareId=" + hanHaiMember.getId();
param.put("path", xcxSharePage.getParamValue() + "?" + key); //跳转页面
String accessToken = this.getAccessToken();
RestTemplate rest = new RestTemplate();
InputStream inputStream = null;
OutputStream outputStream = null;
File file = null;
//获取存储地址
CarrentConfig oneImage = carrentConfigService.lambdaQuery()
.eq(CarrentConfig::getParamCode, "codeImg")
.one();
String codeImg = oneImage.getParamValue();
try{
String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken;
param.put("scene", hanHaiMember.getId());
param.put("width", 150);
param.put("auto_color", false);
param.put("env_version", trial);
Map<String, Object> line_color = new HashMap<>();
line_color.put("r", 0);
line_color.put("g", 0);
line_color.put("b", 0);
param.put("line_color", line_color);
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
org.springframework.http.HttpEntity requestEntity = new org.springframework.http.HttpEntity(JSON.toJSONString(param), headers);
ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
byte[] result = entity.getBody();
inputStream = new ByteArrayInputStream(result);
String tempSave = codeImg;
String filePath = tempSave;
file = new File(filePath);
if (!file.exists()) {
file.createNewFile();
}
outputStream = new FileOutputStream(file);
int len = 0;
byte[] buf = new byte[1024];
while ((len = inputStream.read(buf, 0, 1024)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.flush();
//将文件上传至阿里云
DiskFileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem("File", "text/plain", true, file.getName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
MultipartFile mf = new CommonsMultipartFile(item);
//返回图片下载地址
WxQrCodeVo wxCodeVo = new WxQrCodeVo();
wxCodeVo.setUrl(this.uploadAliYunOss(mf));
wxCodeVo.setName("老环卫欢迎您");
return Result.OK(wxCodeVo);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//删除文件
if (file.exists()) {
file.delete();
}
}
return null;
}
/**
* 获取令牌
*
* @return
*/
private String getAccessToken() {
String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;
String doGet2 = HttpClientUtil.doGet2(requestUrl);
Map<String, String> map = JSON.parseObject(doGet2, new TypeReference<Map<String, String>>() {
});
return map.get("access_token");
}
/**
* 上传文件至阿里云oss
*
* @return
*/
private String uploadAliYunOss(MultipartFile mf) throws Exception {
String uploadFile = "WxCodeFile";
String fileName = new StringBuffer(mf.getOriginalFilename()).append(".jpg").toString();// 获取文件名
String dbpath = uploadFile + File.separator + fileName;
if (dbpath.contains("\\")) {
dbpath = dbpath.replace("\\", "/");
}
String endpoint = this.endpoint;
String accessKey = this.accessKey;
String secretKey = this.secretKey;
// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKey, secretKey);
// 上传Byte数组
byte[] content = mf.getBytes();
String bucketName = this.bucketName;
ossClient.putObject(bucketName, dbpath, new ByteArrayInputStream(content));
// 关闭OSSClient
ossClient.shutdown();
return dbpath;
}
}

+ 28
- 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/UserServiceImpl.java View File

@ -25,7 +25,7 @@ public class UserServiceImpl implements UserService {
//用户信息-根据id查询个人信息 //用户信息-根据id查询个人信息
@Override @Override
public Result<?> queryUser(String token, String id) {
public Result<?> queryUser(String token) {
//返回信息 //返回信息
String message = "查询失败"; String message = "查询失败";
//权限验证 //权限验证
@ -33,7 +33,13 @@ public class UserServiceImpl implements UserService {
try{ try{
//执行查询 //执行查询
CarrentUser user = carrentUserService.getById(id);
CarrentUser user = carrentUserService
.lambdaQuery()
.eq(CarrentUser::getUserId, hanHaiMember.getId())
.one();
if(null == user){
return Result.error("该用户未进行个人注册,请先进行个人注册");
}
//判断执行结果 //判断执行结果
if(null != user){ if(null != user){
message = "个人信息!"; message = "个人信息!";
@ -64,6 +70,16 @@ public class UserServiceImpl implements UserService {
carrentUser.setUserId(hanHaiMember.getId()); carrentUser.setUserId(hanHaiMember.getId());
try{ try{
//判断是否重复注册
CarrentUser user = carrentUserService
.lambdaQuery()
.eq(CarrentUser::getUserId, hanHaiMember.getId())
.one();
if(null != user){
return Result.error("该用户已注册个人信息,请勿重复注册");
}
//执行个人注册 //执行个人注册
result = carrentUserService.save(carrentUser); result = carrentUserService.save(carrentUser);
@ -96,7 +112,17 @@ public class UserServiceImpl implements UserService {
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
try{ try{
CarrentUser user = carrentUserService
.lambdaQuery()
.eq(CarrentUser::getUserId, hanHaiMember.getId())
.one();
if(null == user){
return Result.error("该用户还未进行个人注册,请先去进行个人注册");
}
//执行资料修改 //执行资料修改
carrentUser.setId(user.getId());
carrentUser.setUserId(hanHaiMember.getId());
result = carrentUserService.updateById(carrentUser); result = carrentUserService.updateById(carrentUser);
//判断执行结果 //判断执行结果


Loading…
Cancel
Save