订单
This commit is contained in:
@@ -10,15 +10,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.starry.admin.common.aspect.ClerkUserLogin;
|
||||
import com.starry.admin.common.conf.ThreadLocalRequestDetail;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.clear.module.entity.*;
|
||||
import com.starry.admin.modules.clear.module.vo.PlayClerkCommodityEditVo;
|
||||
import com.starry.admin.modules.clear.module.vo.PlayClerkCommodityQueryVo;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkClassificationInfoService;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkLevelInfoService;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.clear.service.impl.PlayClerkDataReviewInfoServiceImpl;
|
||||
import com.starry.admin.modules.clear.service.impl.PlayClerkUserInfoServiceImpl;
|
||||
import com.starry.admin.modules.clerk.module.entity.*;
|
||||
import com.starry.admin.modules.clerk.module.vo.PlayClerkCommodityEditVo;
|
||||
import com.starry.admin.modules.clerk.module.vo.PlayClerkCommodityQueryVo;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkClassificationInfoService;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkLevelInfoService;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.clerk.service.impl.PlayClerkDataReviewInfoServiceImpl;
|
||||
import com.starry.admin.modules.clerk.service.impl.PlayClerkUserInfoServiceImpl;
|
||||
import com.starry.admin.modules.weichat.entity.*;
|
||||
import com.starry.admin.modules.weichat.service.WxCustomUserService;
|
||||
import com.starry.admin.utils.SecurityUtils;
|
||||
@@ -142,8 +142,8 @@ public class WxClerkController {
|
||||
if (!dataReviewInfoService.queryList(dataReviewInfo).isEmpty()) {
|
||||
throw new CustomException("已有申请未审核");
|
||||
}
|
||||
dataReviewInfo.setClarkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClarkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setClerkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClerkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setContent(JSONObject.toJSONString(vo));
|
||||
dataReviewInfo.setAddTime(new Date());
|
||||
dataReviewInfoService.create(dataReviewInfo);
|
||||
@@ -164,8 +164,8 @@ public class WxClerkController {
|
||||
if (!dataReviewInfoService.queryList(dataReviewInfo).isEmpty()) {
|
||||
throw new CustomException("已有申请未审核");
|
||||
}
|
||||
dataReviewInfo.setClarkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClarkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setClerkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClerkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setContent(JSONObject.toJSONString(vo));
|
||||
dataReviewInfo.setAddTime(new Date());
|
||||
dataReviewInfoService.create(dataReviewInfo);
|
||||
@@ -183,8 +183,8 @@ public class WxClerkController {
|
||||
if (!dataReviewInfoService.queryList(dataReviewInfo).isEmpty()) {
|
||||
throw new CustomException("已有申请未审核");
|
||||
}
|
||||
dataReviewInfo.setClarkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClarkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setClerkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClerkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setContent(JSONObject.toJSONString(vo));
|
||||
dataReviewInfo.setAddTime(new Date());
|
||||
dataReviewInfoService.create(dataReviewInfo);
|
||||
@@ -203,8 +203,8 @@ public class WxClerkController {
|
||||
throw new CustomException("已有申请未审核");
|
||||
}
|
||||
dataReviewInfo.setAddTime(new Date());
|
||||
dataReviewInfo.setClarkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClarkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setClerkAvatar(userInfo.getAvatar());
|
||||
dataReviewInfo.setClerkNickname(userInfo.getNickname());
|
||||
dataReviewInfo.setContent(JSONObject.toJSONString(vo));
|
||||
dataReviewInfoService.create(dataReviewInfo);
|
||||
return R.ok("申请成功");
|
||||
@@ -241,7 +241,7 @@ public class WxClerkController {
|
||||
|
||||
|
||||
/**
|
||||
* 查询陪玩服务项目列表
|
||||
* 查询陪聊服务项目列表
|
||||
*/
|
||||
@GetMapping("/user/listAllCommodity")
|
||||
public R listAllCommodity() {
|
||||
@@ -313,9 +313,6 @@ public class WxClerkController {
|
||||
@GetMapping("/user/queryPriceById")
|
||||
public R queryDetailById(@RequestParam("id") String id) {
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(id);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
return R.ok(playClerkCommodityService.selectByUser(entity.getId()));
|
||||
}
|
||||
|
||||
@@ -332,17 +329,17 @@ public class WxClerkController {
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
List<PlayClarkUserTrendsInfoEntity> entities = new ArrayList<>();
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态1", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态2", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态3", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态4", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态5", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态6", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态7", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
entities.add(new PlayClarkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态8", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
List<PlayClerkUserTrendsInfoEntity> entities = new ArrayList<>();
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态1", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态2", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态3", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态4", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态5", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/0596854e16ae4a268eab4c08e2a9f762.mp3", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态6", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态7", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
entities.add(new PlayClerkUserTrendsInfoEntity(IdUtil.fastSimpleUUID(), "动态8", "0", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", new Date()));
|
||||
|
||||
IPage<PlayClarkUserTrendsInfoEntity> resultPage = new Page<>();
|
||||
IPage<PlayClerkUserTrendsInfoEntity> resultPage = new Page<>();
|
||||
resultPage.setRecords(entities);
|
||||
// 设置分页参数
|
||||
resultPage.setCurrent(1);
|
||||
@@ -365,15 +362,15 @@ public class WxClerkController {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
|
||||
List<PlayClarkUserEvaluateInfoEntity> entities = new ArrayList<>();
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人1昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人2昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人3昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人4昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人5昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClarkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人5昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时", 5));
|
||||
List<PlayClerkUserEvaluateInfoEntity> entities = new ArrayList<>();
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人1昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人2昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人3昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人4昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人5昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时"));
|
||||
entities.add(new PlayClerkUserEvaluateInfoEntity(IdUtil.fastSimpleUUID(), IdUtil.fastSimpleUUID(), "评价人5昵称", "https://live-cloud-cvoon.oss-cn-hangzhou.aliyuncs.com/d8e929c041e94075b93cfc6338a83d4c/2024/04/15/fc09da2f923d46e6951292ff8f34f6aa.png", "评价内容", new Date(), IdUtil.fastSimpleUUID(), "店员昵称", IdUtil.fastSimpleUUID(), "文字语音条", "一小时", 5));
|
||||
|
||||
IPage<PlayClarkUserEvaluateInfoEntity> resultPage = new Page<>();
|
||||
IPage<PlayClerkUserEvaluateInfoEntity> resultPage = new Page<>();
|
||||
resultPage.setRecords(entities);
|
||||
// 设置分页参数
|
||||
resultPage.setCurrent(1);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.weichat.entity.PlayClarkCommodityTreeData;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.weichat.entity.PlayClerkCommodityTreeData;
|
||||
import com.starry.common.result.R;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -31,9 +31,10 @@ public class WxCommodityController {
|
||||
public R getTree(@RequestParam("userId") String userId) {
|
||||
List<PlayClerkCommodityEntity> commodityEntities = clerkCommodityService.selectByUser(userId);
|
||||
Map<String, List<PlayClerkCommodityEntity>> item = commodityEntities.stream().collect(Collectors.groupingBy(PlayClerkCommodityEntity::getCommodityName));
|
||||
List<PlayClarkCommodityTreeData> result = new ArrayList<>();
|
||||
List<PlayClerkCommodityTreeData> result = new ArrayList<>();
|
||||
for (Map.Entry<String, List<PlayClerkCommodityEntity>> entry : item.entrySet()) {
|
||||
PlayClarkCommodityTreeData treeData = new PlayClarkCommodityTreeData(entry.getKey(), entry.getValue());
|
||||
|
||||
PlayClerkCommodityTreeData treeData = new PlayClerkCommodityTreeData(entry.getKey(),entry.getValue());
|
||||
result.add(treeData);
|
||||
}
|
||||
return R.ok(result);
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
import cn.hutool.core.io.FastByteArrayOutputStream;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.common.oss.service.IOssFileService;
|
||||
import com.starry.admin.modules.system.entity.SysAdministrativeAreaDictInfoEntity;
|
||||
import com.starry.admin.modules.system.service.ISysAdministrativeAreaDictInfoService;
|
||||
import com.starry.admin.modules.weichat.service.WxAccessTokenService;
|
||||
import com.starry.admin.modules.weichat.utils.WxFileUtils;
|
||||
@@ -24,7 +20,6 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
|
||||
/**
|
||||
@@ -66,22 +61,9 @@ public class WxCommonController {
|
||||
String accessToken = wxAccessTokenService.getAccessToken();
|
||||
// 下载录音文件,并转化为InputStream
|
||||
InputStream inputStream = WxFileUtils.getTemporaryMaterial(accessToken, mediaId);
|
||||
|
||||
try {
|
||||
FastByteArrayOutputStream read = IoUtil.read(inputStream, false);
|
||||
String str = new String(read.toByteArray(), StandardCharsets.UTF_8);
|
||||
JSONObject jsonObject = JSONObject.parseObject(str);
|
||||
if (jsonObject.containsKey("errcode")) {
|
||||
throw new CustomException("获取微信素材异常" + jsonObject.getString("errmsg"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("获取微信素材异常,", e);
|
||||
throw new CustomException("获取微信素材异常");
|
||||
}
|
||||
|
||||
File tempFile = FileUtil.createTempFile("wx_" + SecurityUtils.getTenantId(), IdUtil.fastSimpleUUID() + ".tmp", null).toFile();
|
||||
File tempFile = FileUtil.createTempFile("wx_" + SecurityUtils.getTenantId(), IdUtil.fastSimpleUUID() + ".amr", null).toFile();
|
||||
// 可以在这里对临时文件进行操作
|
||||
log.debug("tempFile = {}", tempFile.getPath());
|
||||
log.error("tempFile = {}", tempFile.getPath());
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream(tempFile)) {
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
@@ -95,7 +77,7 @@ public class WxCommonController {
|
||||
}
|
||||
//将下载的微信素材文件,转化为MP3文件
|
||||
File targetFile = FileUtil.createTempFile("wx_" + SecurityUtils.getTenantId(), IdUtil.fastSimpleUUID() + ".mp3", null).toFile();
|
||||
log.debug("targetFile = {}", targetFile.getPath());
|
||||
log.error("targetFile = {}", targetFile.getPath());
|
||||
WxFileUtils.audioConvert2Mp3(tempFile, targetFile);
|
||||
//将MP3文件上传到OSS
|
||||
String fileAddress = ossFileService.upload(Files.newInputStream(targetFile.toPath()), SecurityUtils.getTenantId(), IdUtil.fastSimpleUUID() + ".mp3");
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.starry.admin.common.aspect.CustomUserLogin;
|
||||
import com.starry.admin.common.conf.ThreadLocalRequestDetail;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.balance.service.IPlayBalanceDetailsInfoService;
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkUserListResultVo;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserListResultVo;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkCommodityService;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||
import com.starry.admin.modules.follow.service.IPlayCustomFollowInfoService;
|
||||
import com.starry.admin.modules.gift.module.entity.PlayGiftInfoEntity;
|
||||
import com.starry.admin.modules.gift.service.IPlayGiftInfoService;
|
||||
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
||||
import com.starry.admin.modules.order.module.vo.PlayOrderInfoQueryVo;
|
||||
import com.starry.admin.modules.order.module.vo.PlayOrderInfoReturnVo;
|
||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
||||
import com.starry.admin.modules.weichat.entity.PlayClerkFollowStateUpdate;
|
||||
import com.starry.admin.modules.weichat.entity.PlayOrderInfoCommodityAdd;
|
||||
import com.starry.admin.modules.weichat.entity.PlayOrderInfoGiftAdd;
|
||||
import com.starry.admin.modules.weichat.entity.PlayOrderInfoRewardAdd;
|
||||
import com.starry.admin.modules.weichat.entity.*;
|
||||
import com.starry.admin.modules.weichat.service.WxCustomUserService;
|
||||
import com.starry.admin.utils.MoneyUtils;
|
||||
import com.starry.common.result.R;
|
||||
@@ -40,14 +41,12 @@ import java.math.BigDecimal;
|
||||
@RequestMapping("/wx/custom/")
|
||||
public class WxCustomController {
|
||||
|
||||
|
||||
@Resource
|
||||
private IPlayCustomUserInfoService customUserInfoService;
|
||||
|
||||
@Resource
|
||||
private IPlayBalanceDetailsInfoService playBalanceDetailsInfoService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IPlayClerkUserInfoService clerkUserInfoService;
|
||||
|
||||
@@ -57,11 +56,9 @@ public class WxCustomController {
|
||||
@Resource
|
||||
private IPlayClerkCommodityService clerkCommodityService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IPlayCustomFollowInfoService playCustomFollowInfoService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IPlayClerkCommodityService playClerkCommodityService;
|
||||
|
||||
@@ -77,12 +74,9 @@ public class WxCustomController {
|
||||
* @param id 店员ID
|
||||
* @return 店员详细信息
|
||||
*/
|
||||
@GetMapping("/queryClarkDetailedById")
|
||||
public R queryClarkDetailedById(@RequestParam("id") String id) {
|
||||
@GetMapping("/queryClerkDetailedById")
|
||||
public R queryClerkDetailedById(@RequestParam("id") String id) {
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(id);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
PlayClerkUserListResultVo vo = ConvertUtil.entityToVo(entity, PlayClerkUserListResultVo.class);
|
||||
vo.setAddress(entity.getCity());
|
||||
// 查询是否关注,未登录情况下,默认为未关注
|
||||
@@ -90,13 +84,13 @@ public class WxCustomController {
|
||||
if (StringUtils.isNotEmpty(loginUserId)) {
|
||||
vo.setFollowState(playCustomFollowInfoService.queryFollowState(loginUserId, vo.getId()));
|
||||
}
|
||||
//服务项目
|
||||
// 服务项目
|
||||
vo.setCommodity(playClerkCommodityService.getClerkCommodityList(vo.getId()));
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询店员详细信息
|
||||
* 根据顾客ID查询当前顾客详细信息
|
||||
*/
|
||||
@CustomUserLogin
|
||||
@GetMapping("/queryById")
|
||||
@@ -116,130 +110,148 @@ public class WxCustomController {
|
||||
MoneyUtils.verificationTypeIsNormal(vo.getMoney());
|
||||
String userId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(userId);
|
||||
if (customUserInfo == null) {
|
||||
throw new CustomException("用户身份异常");
|
||||
}
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClearId());
|
||||
if (clerkUserInfo == null) {
|
||||
throw new CustomException("打赏对象不存在");
|
||||
}
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClerkId());
|
||||
if (new BigDecimal(vo.getMoney()).compareTo(customUserInfo.getAccountBalance()) > 0) {
|
||||
throw new CustomException("余额不足");
|
||||
}
|
||||
// 记录订单信息
|
||||
orderInfoService.createRewardOrder(new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), userId);
|
||||
|
||||
// 顾客减少余额
|
||||
customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance().subtract(new BigDecimal(vo.getMoney())));
|
||||
playBalanceDetailsInfoService.create("0", customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().subtract(new BigDecimal(vo.getMoney())), "打赏", new BigDecimal(vo.getMoney()).multiply(new BigDecimal("-1")));
|
||||
|
||||
// 陪玩增加余额
|
||||
// 陪聊增加余额
|
||||
clerkUserInfoService.updateAccountBalanceById(clerkUserInfo.getId(), clerkUserInfo.getAccountBalance().add(new BigDecimal(vo.getMoney())));
|
||||
playBalanceDetailsInfoService.create("1", clerkUserInfo.getId(), clerkUserInfo.getAccountBalance(), clerkUserInfo.getAccountBalance().add(new BigDecimal(vo.getMoney())), "打赏", new BigDecimal(vo.getMoney()).multiply(new BigDecimal("1")));
|
||||
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 顾客下单-赠送礼物
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@PostMapping("/order/gift")
|
||||
public R giftToOdder(@Validated @RequestBody PlayOrderInfoGiftAdd vo) {
|
||||
int giftQuantity;
|
||||
try {
|
||||
giftQuantity = Integer.parseInt(vo.getGiftQuantity());
|
||||
} catch (Exception e) {
|
||||
throw new CustomException("礼物数量异常");
|
||||
}
|
||||
if (giftQuantity <= 0 || giftQuantity > 10000) {
|
||||
throw new CustomException("礼物数量必须大于0并且小于1000");
|
||||
}
|
||||
String userId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
PlayGiftInfoEntity giftInfo = giftInfoService.selectPlayGiftInfoById(vo.getGiftId());
|
||||
if (giftInfo == null) {
|
||||
throw new CustomException("礼物不存在");
|
||||
}
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(userId);
|
||||
if (customUserInfo == null) {
|
||||
throw new CustomException("用户身份异常");
|
||||
}
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClearId());
|
||||
if (clerkUserInfo == null) {
|
||||
throw new CustomException("打赏对象不存在");
|
||||
}
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClerkId());
|
||||
BigDecimal money = giftInfo.getPrice().multiply(new BigDecimal(vo.getGiftQuantity()));
|
||||
|
||||
if (money.compareTo(customUserInfo.getAccountBalance()) > 0) {
|
||||
throw new CustomException("账号余额不足");
|
||||
}
|
||||
// 记录订单信息
|
||||
|
||||
orderInfoService.createGiftOrder(vo.getGiftId(), giftInfo.getPrice(), vo.getGiftQuantity(), money, money, userId);
|
||||
|
||||
// 顾客减少余额
|
||||
customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance().subtract(money));
|
||||
playBalanceDetailsInfoService.create("0", customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().subtract(money), "赠送礼物", money.multiply(new BigDecimal("-1")));
|
||||
|
||||
// 陪玩增加余额
|
||||
// 陪聊增加余额
|
||||
clerkUserInfoService.updateAccountBalanceById(clerkUserInfo.getId(), clerkUserInfo.getAccountBalance().add(money));
|
||||
playBalanceDetailsInfoService.create("1", clerkUserInfo.getId(), clerkUserInfo.getAccountBalance(), clerkUserInfo.getAccountBalance().add(money), "赠送礼物", money.multiply(new BigDecimal("1")));
|
||||
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增指定订单
|
||||
*
|
||||
* @param vo 指定订单查询对象
|
||||
* @return com.starry.common.result.R
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 16:31
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@PostMapping("/order/commodity")
|
||||
public R commodityToOdder(@Validated @RequestBody PlayOrderInfoCommodityAdd vo) {
|
||||
int commodityId;
|
||||
try {
|
||||
commodityId = Integer.parseInt(vo.getCommodityQuantity());
|
||||
} catch (Exception e) {
|
||||
throw new CustomException("礼物数量异常");
|
||||
}
|
||||
if (commodityId <= 0 || commodityId > 10000) {
|
||||
throw new CustomException("购买数量必须大于0并且小于1000");
|
||||
}
|
||||
String userId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
public R commodityToOrdder(@Validated @RequestBody PlayOrderInfoCommodityAdd vo) {
|
||||
String customId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
|
||||
PlayClerkCommodityEntity clerkCommodity = clerkCommodityService.selectPlayClerkCommodityById(vo.getCommodityId());
|
||||
if (clerkCommodity == null) {
|
||||
throw new CustomException("服务不存在");
|
||||
}
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(userId);
|
||||
if (customUserInfo == null) {
|
||||
throw new CustomException("用户身份异常");
|
||||
}
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClearId());
|
||||
if (clerkUserInfo == null) {
|
||||
throw new CustomException("打赏对象不存在");
|
||||
}
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(customId);
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClerkId());
|
||||
BigDecimal money = clerkCommodity.getCommodityPrice().multiply(new BigDecimal(vo.getCommodityQuantity()));
|
||||
|
||||
if (money.compareTo(customUserInfo.getAccountBalance()) > 0) {
|
||||
throw new CustomException("余额不足");
|
||||
}
|
||||
// 记录订单信息
|
||||
|
||||
orderInfoService.createOrdinaryOrder("2", "0", clerkCommodity.getCommodityId(), clerkCommodity.getCommodityPrice(), vo.getCommodityQuantity(), money, money, userId);
|
||||
|
||||
orderInfoService.createOrdinaryOrder("2", "0", clerkCommodity.getCommodityId(), clerkCommodity.getCommodityPrice(), vo.getCommodityQuantity(), money, money, customId);
|
||||
// 顾客减少余额
|
||||
customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance().subtract(money));
|
||||
playBalanceDetailsInfoService.create("0", customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().subtract(money), "打赏", money.multiply(new BigDecimal("-1")));
|
||||
// 陪玩增加余额
|
||||
// 陪聊增加余额
|
||||
clerkUserInfoService.updateAccountBalanceById(clerkUserInfo.getId(), clerkUserInfo.getAccountBalance().add(money));
|
||||
playBalanceDetailsInfoService.create("1", clerkUserInfo.getId(), clerkUserInfo.getAccountBalance(), clerkUserInfo.getAccountBalance().add(money), "下单", money.multiply(new BigDecimal("1")));
|
||||
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
@CustomUserLogin
|
||||
@PostMapping("/order/random")
|
||||
public R randomToOrdder(@Validated @RequestBody PlayOrderInfoRandomAdd vo) {
|
||||
// 下单成功后,先根据用户条件进行随机分配
|
||||
return R.ok("下单成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 顾客分页查询本人订单列表
|
||||
*
|
||||
* @param vo 订单列表分页查询对象
|
||||
* @return com.starry.common.result.R
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 15:57
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@PostMapping("/order/queryByPage")
|
||||
public R queryOrderByPage(@Validated @RequestBody PlayOrderInfoQueryVo vo) {
|
||||
vo.setPurchaserBy(ThreadLocalRequestDetail.getCustomUserInfo().getId());
|
||||
vo.setOrderType("2");
|
||||
IPage<PlayOrderInfoReturnVo> iPage = orderInfoService.selectOrderInfoPage(vo);
|
||||
return R.ok(iPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 顾客分页查询本人订单详细信息
|
||||
*
|
||||
* @param id 订单ID
|
||||
* @return com.starry.common.result.R
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 15:57
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@GetMapping("/order/queryById")
|
||||
public R queryById(@RequestParam("id") String id) {
|
||||
PlayOrderInfoEntity orderInfo = orderInfoService.selectOrderInfoById(id);
|
||||
return R.ok(orderInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 顾客分页查询本人订单列表
|
||||
*
|
||||
* @param id 订单ID
|
||||
* @return com.starry.common.result.R
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 15:57
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@GetMapping("/order/cancellation")
|
||||
public R cancellationOrder(@RequestParam("id") String id) {
|
||||
orderInfoService.customCancellationOrder(id);
|
||||
return R.ok("取消成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 顾客修改对陪玩的关注状态
|
||||
*
|
||||
* @param vo 陪玩的关注状态对象
|
||||
* @return com.starry.common.result.R
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 15:57
|
||||
**/
|
||||
@CustomUserLogin
|
||||
@PostMapping("/followState/update")
|
||||
public R followStateUpdate(@Validated @RequestBody PlayClerkFollowStateUpdate vo) {
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClearId());
|
||||
if (clerkUserInfo == null) {
|
||||
throw new CustomException("关注对象不存在");
|
||||
}
|
||||
playCustomFollowInfoService.updateFollowState(ThreadLocalRequestDetail.getCustomUserInfo().getId(), vo.getClearId(), vo.getFollowState());
|
||||
PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(vo.getClerkId());
|
||||
playCustomFollowInfoService.updateFollowState(ThreadLocalRequestDetail.getCustomUserInfo().getId(), clerkUserInfo.getId(), vo.getFollowState());
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
|
||||
@@ -7,14 +7,13 @@ import com.starry.admin.common.aspect.ClerkUserLogin;
|
||||
import com.starry.admin.common.aspect.CustomUserLogin;
|
||||
import com.starry.admin.common.conf.ThreadLocalRequestDetail;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||
import com.starry.admin.modules.weichat.entity.WxUserLoginVo;
|
||||
import com.starry.admin.modules.weichat.entity.WxUserQueryAddressVo;
|
||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
||||
import com.starry.admin.modules.weichat.service.WxCustomUserService;
|
||||
import com.starry.admin.modules.weichat.service.WxOauthService;
|
||||
import com.starry.admin.modules.weichat.service.WxTokenService;
|
||||
import com.starry.common.redis.RedisCache;
|
||||
@@ -89,26 +88,30 @@ public class WxOauthController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/clark/login")
|
||||
@PostMapping("/clerk/login")
|
||||
public R clerkLogin(@Validated @RequestBody WxUserLoginVo vo) {
|
||||
String userId = wxOauthService.clarkUserLogin(vo.getCode());
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(userId);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
try {
|
||||
String userId = wxOauthService.clerkUserLogin(vo.getCode());
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(userId);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
// 缓存租户信息
|
||||
String redisKey = "TENANT_INFO:" + entity.getId();
|
||||
redisCache.setCacheObject(redisKey, entity.getTenantId());
|
||||
String tokenValue = tokenService.createWxUserToken(entity.getId());
|
||||
JSONObject jsonObject = JSONObject.from(clerkUserInfoService.getVo(entity));
|
||||
jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue);
|
||||
jsonObject.put("tokenName", CLERK_USER_LOGIN_TOKEN);
|
||||
jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
clerkUserInfoService.updateTokenById(entity.getId(), tokenValue);
|
||||
return R.ok(jsonObject);
|
||||
} catch (Exception e) {
|
||||
return R.unauthorized();
|
||||
}
|
||||
// 缓存租户信息
|
||||
String redisKey = "TENANT_INFO:" + entity.getId();
|
||||
redisCache.setCacheObject(redisKey, entity.getTenantId());
|
||||
String tokenValue = tokenService.createWxUserToken(entity.getId());
|
||||
JSONObject jsonObject = JSONObject.from(clerkUserInfoService.getVo(entity));
|
||||
jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue);
|
||||
jsonObject.put("tokenName", CLERK_USER_LOGIN_TOKEN);
|
||||
jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
clerkUserInfoService.updateTokenById(entity.getId(), tokenValue);
|
||||
return R.ok(jsonObject);
|
||||
}
|
||||
|
||||
@PostMapping("/clark/loginById")
|
||||
@PostMapping("/clerk/loginById")
|
||||
public R loginById(@Validated @RequestBody WxUserLoginVo vo) {
|
||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(vo.getCode());
|
||||
if (entity == null) {
|
||||
@@ -127,9 +130,9 @@ public class WxOauthController {
|
||||
}
|
||||
|
||||
@ClerkUserLogin
|
||||
@GetMapping("/clark/logout")
|
||||
@GetMapping("/clerk/logout")
|
||||
public R clerkLogout() {
|
||||
wxOauthService.clarkUserLogout(ThreadLocalRequestDetail.getClerkUserInfo());
|
||||
wxOauthService.clerkUserLogout(ThreadLocalRequestDetail.getClerkUserInfo());
|
||||
return R.ok("登出成功");
|
||||
}
|
||||
|
||||
@@ -152,22 +155,27 @@ public class WxOauthController {
|
||||
|
||||
|
||||
@PostMapping("/custom/login")
|
||||
|
||||
public R customLogin(@Validated @RequestBody WxUserLoginVo vo) {
|
||||
String userId = wxOauthService.customUserLogin(vo.getCode());
|
||||
PlayCustomUserInfoEntity entity = customUserInfoService.selectById(userId);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
try {
|
||||
String userId = wxOauthService.customUserLogin(vo.getCode());
|
||||
PlayCustomUserInfoEntity entity = customUserInfoService.selectById(userId);
|
||||
if (entity == null) {
|
||||
throw new CustomException("用户不存在");
|
||||
}
|
||||
// 缓存租户信息
|
||||
String redisKey = "TENANT_INFO:" + entity.getId();
|
||||
redisCache.setCacheObject(redisKey, entity.getTenantId());
|
||||
JSONObject jsonObject = JSONObject.from(entity);
|
||||
String tokenValue = tokenService.createWxUserToken(entity.getId());
|
||||
jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue);
|
||||
jsonObject.put("tokenName", CUSTOM_USER_LOGIN_TOKEN);
|
||||
jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
customUserInfoService.updateTokenById(entity.getId(), tokenValue);
|
||||
return R.ok(jsonObject);
|
||||
} catch (Exception e) {
|
||||
return R.unauthorized();
|
||||
}
|
||||
// 缓存租户信息
|
||||
String redisKey = "TENANT_INFO:" + entity.getId();
|
||||
redisCache.setCacheObject(redisKey, entity.getTenantId());
|
||||
JSONObject jsonObject = JSONObject.from(entity);
|
||||
String tokenValue = tokenService.createWxUserToken(entity.getId());
|
||||
jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue);
|
||||
jsonObject.put("tokenName", CUSTOM_USER_LOGIN_TOKEN);
|
||||
jsonObject.put("loginDate", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
customUserInfoService.updateTokenById(entity.getId(), tokenValue);
|
||||
return R.ok(jsonObject);
|
||||
}
|
||||
|
||||
@PostMapping("/custom/loginById")
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
package com.starry.admin.modules.weichat.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.XmlUtil;
|
||||
import com.github.wxpay.sdk.WXPayUtil;
|
||||
import com.starry.admin.common.aspect.CustomUserLogin;
|
||||
import com.starry.admin.common.conf.ThreadLocalRequestDetail;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.common.play.wx.WeChatConstants;
|
||||
import com.starry.admin.common.play.wx.WxCustomPayUtils;
|
||||
import com.starry.admin.modules.balance.service.IPlayBalanceDetailsInfoService;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
||||
import com.starry.admin.modules.platform.entity.SysTenantEntity;
|
||||
import com.starry.admin.modules.platform.service.impl.SysTenantServiceImpl;
|
||||
import com.starry.admin.modules.weichat.entity.WxPayReturnVo;
|
||||
import com.starry.admin.utils.SecurityUtils;
|
||||
import com.starry.common.result.R;
|
||||
import com.starry.common.utils.StringUtils;
|
||||
@@ -21,11 +27,25 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Map;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/wx/play/")
|
||||
@RequestMapping("/wx/pay/")
|
||||
public class WxPlayController {
|
||||
|
||||
|
||||
@@ -43,48 +63,75 @@ public class WxPlayController {
|
||||
private IPlayOrderInfoService orderInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付-微信回调地址(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&index=8)
|
||||
*
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 11:25
|
||||
**/
|
||||
@GetMapping("/jsCallback")
|
||||
public void jsCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
// 读取回调数据
|
||||
InputStream inputStream = request.getInputStream();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String s;
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
|
||||
while ((s = in.readLine()) != null) {
|
||||
sb.append(s);
|
||||
}
|
||||
in.close();
|
||||
inputStream.close();
|
||||
|
||||
// 解析xml成map
|
||||
Map<String, Object> m = XmlUtil.xmlToMap(sb.toString());
|
||||
// 过滤空 设置 TreeMap
|
||||
SortedMap<Object, Object> packageParams = new TreeMap<>();
|
||||
for (String parameter : m.keySet()) {
|
||||
Object parameterValue = m.get(parameter);
|
||||
String v = "";
|
||||
if (null != parameterValue) {
|
||||
v = parameterValue.toString().trim();
|
||||
}
|
||||
packageParams.put(parameter, v);
|
||||
}
|
||||
log.info("packageParams=" + packageParams);
|
||||
String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
|
||||
response.getWriter().write(resXml);
|
||||
}
|
||||
|
||||
|
||||
@CustomUserLogin
|
||||
@GetMapping("/custom/createOrder")
|
||||
public R createOrder(@RequestParam("money") String money) {
|
||||
if (StringUtils.isEmpty(money)) {
|
||||
throw new CustomException("请求参数错误,money不能为空");
|
||||
}
|
||||
|
||||
String tenantId = SecurityUtils.getTenantId();
|
||||
if (StrUtil.isBlankIfStr(tenantId)) {
|
||||
throw new CustomException("系统错误,租户ID不能为空");
|
||||
throw new CustomException("系统错误,租户ID获取失败");
|
||||
}
|
||||
// 用户信息
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(ThreadLocalRequestDetail.getCustomUserInfo().getId());
|
||||
// 租户信息
|
||||
SysTenantEntity entity = tenantService.selectSysTenantByTenantId(tenantId);
|
||||
if (entity == null) {
|
||||
throw new CustomException("系统错误,租户ID不能为空");
|
||||
// 订单总金额,单位为分(开发阶段固定设置为支付1分钱)
|
||||
long totalFee = 1;
|
||||
// 创建订单信息
|
||||
String orderId = IdUtil.fastSimpleUUID();
|
||||
orderInfoService.createRechargeOrder(orderId, new BigDecimal(totalFee * 1.0 / 100), new BigDecimal(totalFee * 1.0 / 100), customUserInfo.getId());
|
||||
String body = "树洞充值";
|
||||
try {
|
||||
String nonceStr = WxCustomPayUtils.generateNonceStr();
|
||||
Map<String, String> playRequestParameters = WxCustomPayUtils.getPayRequestParameters(customUserInfo.getOpenid(), entity.getAppId(), entity.getMchId(), orderId, nonceStr, "127.0.0.1", body, SecurityUtils.getTenantId(), totalFee);
|
||||
log.info(WXPayUtil.mapToXml(playRequestParameters));
|
||||
String sign = WxCustomPayUtils.generateSignature(playRequestParameters, entity.getMchKey());
|
||||
String prepayId = WxCustomPayUtils.unifiedOrderJsApi(playRequestParameters, sign, entity.getMchKey());
|
||||
WxPayReturnVo vo = new WxPayReturnVo(entity.getMchKey(), String.valueOf(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"))), nonceStr, WeChatConstants.SignType.MD5.toString(), sign, prepayId, WeChatConstants.NOTIFY_URL);
|
||||
return R.ok(vo);
|
||||
} catch (Exception e) {
|
||||
log.error("创建微信预支付订单失败,error=", e);
|
||||
throw new CustomException("创建支付订单失败," + e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
String openId = ThreadLocalRequestDetail.getCustomUserInfo().getOpenid();
|
||||
//订单总金额,单位为分
|
||||
int totalFee = getTotalFee(money);
|
||||
// String orderId = IdUtil.fastSimpleUUID();
|
||||
// String body = "body";
|
||||
//
|
||||
// try {
|
||||
// String id = WxPlayUtils.unifiedOrderJSAPI(openId, entity.getAppId(), entity.getMchId(), orderId, "127.0.0.1", body, SecurityUtils.getTenantId(), totalFee);
|
||||
// return R.ok(id);
|
||||
// } catch (Exception e) {
|
||||
// log.error("创建支付订单失败,error=", e);
|
||||
// throw new CustomException("创建支付订单失败," + e.getMessage());
|
||||
// }
|
||||
|
||||
String userId = ThreadLocalRequestDetail.getCustomUserInfo().getId();
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(userId);
|
||||
if (customUserInfo == null) {
|
||||
throw new CustomException("用户身份异常");
|
||||
}
|
||||
|
||||
orderInfoService.createRechargeOrder(new BigDecimal(totalFee / 100), new BigDecimal(totalFee / 100), userId);
|
||||
customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance().add(new BigDecimal(totalFee / 100)));
|
||||
playBalanceDetailsInfoService.create("1", customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().add(new BigDecimal(totalFee / 100)), "充值", new BigDecimal(totalFee / 100));
|
||||
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
|
||||
@@ -92,10 +139,10 @@ public class WxPlayController {
|
||||
* @param money 金额,单位-元
|
||||
* @return 金额, 单位-分
|
||||
*/
|
||||
public int getTotalFee(String money) {
|
||||
int totalFee;
|
||||
public long getTotalFee(String money) {
|
||||
long totalFee;
|
||||
try {
|
||||
totalFee = (int) Float.parseFloat(money) * 100;
|
||||
totalFee = (long) Float.parseFloat(money) * 100;
|
||||
} catch (Exception e) {
|
||||
throw new CustomException("请求参数错误,money类型异常");
|
||||
}
|
||||
@@ -104,4 +151,8 @@ public class WxPlayController {
|
||||
}
|
||||
return totalFee;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkCommodityEntity;
|
||||
import com.starry.common.utils.ConvertUtil;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -9,23 +9,25 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* 店员商品树状数据
|
||||
*
|
||||
* @author admin
|
||||
*/
|
||||
@Data
|
||||
public class PlayClarkCommodityTreeData {
|
||||
public class PlayClerkCommodityTreeData {
|
||||
|
||||
private String commodityType;
|
||||
|
||||
|
||||
private List<ClarkCommodityInfo> value;
|
||||
private List<ClerkCommodityInfo> value;
|
||||
|
||||
|
||||
public PlayClarkCommodityTreeData(String commodityType, List<PlayClerkCommodityEntity> value) {
|
||||
public PlayClerkCommodityTreeData(String commodityType, List<PlayClerkCommodityEntity> value) {
|
||||
this.commodityType = commodityType;
|
||||
this.value = ConvertUtil.entityToVoList(value, ClarkCommodityInfo.class);
|
||||
this.value = ConvertUtil.entityToVoList(value, ClerkCommodityInfo.class);
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class ClarkCommodityInfo {
|
||||
public static class ClerkCommodityInfo {
|
||||
|
||||
private String id;
|
||||
|
||||
@@ -7,7 +7,7 @@ import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Pattern;
|
||||
|
||||
/**
|
||||
* 店员和陪玩关注状态
|
||||
* 店员和陪聊关注状态
|
||||
*
|
||||
* @author admin
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ public class PlayClerkFollowStateUpdate {
|
||||
* 店员用户ID
|
||||
*/
|
||||
@NotBlank(message = "打赏对象不能为空")
|
||||
private String clearId;
|
||||
private String clerkId;
|
||||
|
||||
@NotBlank(message = "关注状态不能为空")
|
||||
@Pattern(regexp = "[01]", message = "关注状态必须为0或者1")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import com.starry.admin.modules.clear.module.vo.PlayClerkCommodityQueryVo;
|
||||
import com.starry.admin.modules.clerk.module.vo.PlayClerkCommodityQueryVo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -116,12 +116,12 @@ public class PlayClerkUserLoginResponseVo {
|
||||
private String onlineState;
|
||||
|
||||
/**
|
||||
* 员工状态【1:是陪玩,0:不是陪玩】
|
||||
* 员工状态【1:是陪聊,0:不是陪聊】
|
||||
*/
|
||||
private String clerkState;
|
||||
|
||||
/**
|
||||
* 允许申请陪玩
|
||||
* 允许申请陪聊
|
||||
*/
|
||||
private boolean clerkAllowEdit = true;
|
||||
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
|
||||
import com.starry.admin.modules.gift.module.constant.GiftConstant;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -19,14 +23,18 @@ public class PlayOrderInfoCommodityAdd {
|
||||
* 店员用户ID
|
||||
*/
|
||||
@NotBlank(message = "打赏对象不能为空")
|
||||
private String clearId;
|
||||
private String clerkId;
|
||||
|
||||
|
||||
@NotBlank(message = "商品ID不能为空")
|
||||
private String commodityId;
|
||||
|
||||
@NotBlank(message = "礼物数量不能为空")
|
||||
private String commodityQuantity;
|
||||
|
||||
|
||||
@NotNull(message = "数量不能为空")
|
||||
@Min(value = GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY, message = "数量不能小于" + GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY)
|
||||
@Max(value = GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY, message = "数量不能大于" + GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY)
|
||||
private int commodityQuantity;
|
||||
|
||||
|
||||
@NotBlank(message = "微信号不能为空")
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
|
||||
import com.starry.admin.modules.gift.module.constant.GiftConstant;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 新增赠礼订单实体
|
||||
@@ -13,19 +17,20 @@ import javax.validation.constraints.NotBlank;
|
||||
@Data
|
||||
public class PlayOrderInfoGiftAdd {
|
||||
|
||||
|
||||
/**
|
||||
* 店员用户ID
|
||||
*/
|
||||
@NotBlank(message = "打赏对象不能为空")
|
||||
private String clearId;
|
||||
private String clerkId;
|
||||
|
||||
|
||||
@NotBlank(message = "礼物ID不能为空")
|
||||
private String giftId;
|
||||
|
||||
@NotBlank(message = "礼物数量不能为空")
|
||||
private String giftQuantity;
|
||||
@NotNull(message = "礼物数量不能为空")
|
||||
@Min(value = GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY, message = "礼物数量不能小于" + GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY)
|
||||
@Max(value = GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY, message = "礼物数量不能大于" + GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY)
|
||||
private int giftQuantity;
|
||||
|
||||
|
||||
@NotBlank(message = "微信号不能为空")
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
|
||||
import com.starry.admin.modules.gift.module.constant.GiftConstant;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 新增随机订单实体
|
||||
*
|
||||
* @author admin
|
||||
*/
|
||||
@Data
|
||||
public class PlayOrderInfoRandomAdd {
|
||||
|
||||
/**
|
||||
* 陪聊性别(0:未知;1:男;2:女)
|
||||
*
|
||||
* @since 2024/5/8 15:31
|
||||
**/
|
||||
private String sex;
|
||||
/**
|
||||
* 陪聊等级
|
||||
**/
|
||||
@NotBlank(message = "商品ID不能为空")
|
||||
private String levelId;
|
||||
|
||||
/**
|
||||
* 标签列表
|
||||
*
|
||||
* @since 2024/5/8 15:26
|
||||
**/
|
||||
private List<String> labels;
|
||||
|
||||
|
||||
@NotBlank(message = "商品ID不能为空")
|
||||
private String commodityId;
|
||||
|
||||
@NotNull(message = "数量不能为空")
|
||||
@Min(value = GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY, message = "数量不能小于" + GiftConstant.MINIMUM_SINGLE_GIFT_QUANTITY)
|
||||
@Max(value = GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY, message = "数量不能大于" + GiftConstant.MAXIMUM_SINGLE_GIFT_QUANTITY)
|
||||
private int commodityQuantity;
|
||||
|
||||
|
||||
@NotBlank(message = "微信号不能为空")
|
||||
private String weiChatCode;
|
||||
|
||||
/**
|
||||
* 是否排除下单过的成员(0:不排除;1:排除)
|
||||
*
|
||||
* @since 2024/5/8 15:28
|
||||
**/
|
||||
private String excludeHistory;
|
||||
|
||||
/**
|
||||
* 优惠券ID列表
|
||||
*/
|
||||
private List<String> couponIds;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 新增打赏订单实体
|
||||
* @author admin
|
||||
*/
|
||||
@Data
|
||||
public class PlayOrderInfoRewardAdd {
|
||||
@@ -16,7 +17,7 @@ public class PlayOrderInfoRewardAdd {
|
||||
* 店员用户ID
|
||||
*/
|
||||
@NotBlank(message = "打赏对象不能为空")
|
||||
private String clearId;
|
||||
private String clerkId;
|
||||
/**
|
||||
* 打赏金额
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 微信预支付接口返回信息
|
||||
*
|
||||
* @author 杭州世平信息科技有限公司-xuhq
|
||||
* @since 2024/5/8 10:43
|
||||
**/
|
||||
@Data
|
||||
public class WxPayReturnVo {
|
||||
|
||||
private String orderId;
|
||||
private String timeStamp;
|
||||
private String nonceStr;
|
||||
private String signType;
|
||||
private String paySign;
|
||||
private String prepayId;
|
||||
private String callback;
|
||||
|
||||
public WxPayReturnVo(String orderId, String timeStamp, String nonceStr, String signType, String paySign, String prepayId, String callback) {
|
||||
this.orderId = orderId;
|
||||
this.timeStamp = timeStamp;
|
||||
this.nonceStr = nonceStr;
|
||||
this.signType = signType;
|
||||
this.paySign = paySign;
|
||||
this.prepayId = prepayId;
|
||||
this.callback = callback;
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,9 @@ package com.starry.admin.modules.weichat.service;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.starry.admin.common.exception.ServiceException;
|
||||
import com.starry.admin.modules.clear.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkLevelInfoService;
|
||||
import com.starry.admin.modules.clear.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkLevelInfoService;
|
||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
||||
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomLevelInfoService;
|
||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||
@@ -20,6 +20,11 @@ import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 微信授权
|
||||
*
|
||||
* @author admin
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WxOauthService {
|
||||
@@ -51,7 +56,7 @@ public class WxOauthService {
|
||||
* @author admin
|
||||
* @since 2024/4/15 11:01
|
||||
**/
|
||||
public String clarkUserLogin(String code) {
|
||||
public String clerkUserLogin(String code) {
|
||||
WxOAuth2AccessToken token = getWxOAuth2AccessToken(code);
|
||||
log.info("token = " + token);
|
||||
String openId = getOpenId(token);
|
||||
@@ -71,7 +76,7 @@ public class WxOauthService {
|
||||
}
|
||||
|
||||
|
||||
public void clarkUserLogout(PlayClerkUserInfoEntity entity) {
|
||||
public void clerkUserLogout(PlayClerkUserInfoEntity entity) {
|
||||
entity.setToken("empty");
|
||||
clerkUserInfoService.update(entity);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class WxFileUtils {
|
||||
* @throws IOException IOException
|
||||
*/
|
||||
public static InputStream getTemporaryMaterial(String access_token, String mediaId) throws IOException {
|
||||
String url = "https://api.weixin.qq.com/cgi-bin/media/get?" + access_token + "=ACCESS_TOKEN&media_id=" + mediaId;
|
||||
String url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=" + access_token + "&media_id=" + mediaId;
|
||||
// 请求参数
|
||||
HashMap<String, String> param = new HashMap<>();
|
||||
param.put("media_id", mediaId);
|
||||
@@ -52,22 +52,20 @@ public class WxFileUtils {
|
||||
log.error("从微信下载的临时素材文件为空");
|
||||
throw new CustomException("音频文件上传失败");
|
||||
}
|
||||
FileUtil.touch("/tmp/jave/ffmpeg-amd64-3.5.0/");
|
||||
AudioAttributes audio = new AudioAttributes();
|
||||
audio.setCodec("libmp3lame");
|
||||
audio.setBitRate(128000);
|
||||
audio.setChannels(2);
|
||||
audio.setSamplingRate(44100);
|
||||
EncodingAttributes attrs = new EncodingAttributes();
|
||||
attrs.setOutputFormat("mp3");
|
||||
attrs.setAudioAttributes(audio);
|
||||
Encoder encoder = new Encoder();
|
||||
MultimediaObject multimediaObject = new MultimediaObject(source);
|
||||
try {
|
||||
encoder.encode(multimediaObject, target, attrs);
|
||||
AudioAttributes audio = new AudioAttributes();
|
||||
audio.setCodec("libmp3lame");
|
||||
audio.setBitRate(128000);
|
||||
audio.setChannels(2);
|
||||
audio.setSamplingRate(44100);
|
||||
EncodingAttributes attrs = new EncodingAttributes();
|
||||
attrs.setOutputFormat("mp3");
|
||||
attrs.setAudioAttributes(audio);
|
||||
Encoder encoder = new Encoder();
|
||||
encoder.encode(new MultimediaObject(source), target, attrs);
|
||||
} catch (Exception ex) {
|
||||
log.error("音频文件格式转化失败", ex);
|
||||
throw new CustomException("音频文件格式转化失败");
|
||||
throw new CustomException("音频文件上传失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user