Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
Tankaikai
2025-01-06 14:59:08 +08:00
37 changed files with 700 additions and 409 deletions

View File

@@ -10,16 +10,21 @@ import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
/** /**
* 方法调用统一切面处理 * 方法调用统一切面处理
*/ */
@Aspect @Aspect
@Component @Component
@Slf4j @Slf4j
@Profile({"dev"})
public class AppApiMethodAspect { public class AppApiMethodAspect {
@Pointcut("!execution(public * (com.sqx.modules.sys.controller.SysLoginController).*(..)) " + @Pointcut("!execution(public * (com.sqx.modules.sys.controller.SysLoginController).*(..)) " +

View File

@@ -292,6 +292,7 @@ public class UserController {
int dyCount = userService.queryUserCount(type, date, "抖音", qdCode); int dyCount = userService.queryUserCount(type, date, "抖音", qdCode);
int giveMemberCount = userService.userMessage(date, type, qdCode, 1); int giveMemberCount = userService.userMessage(date, type, qdCode, 1);
int moneyMemberCount = userService.userMessage(date, type, qdCode, 2); int moneyMemberCount = userService.userMessage(date, type, qdCode, 2);
// int memberCount = userVipService.userMessage(date, type, qdCode, null);
int memberCount = userService.userMessage(date, type, qdCode, null); int memberCount = userService.userMessage(date, type, qdCode, null);
int userCount = sumUserCount - memberCount; int userCount = sumUserCount - memberCount;
Map<String, Integer> result = new HashMap<>(); Map<String, Integer> result = new HashMap<>();
@@ -359,24 +360,24 @@ public class UserController {
@PostMapping("/updateSysUserMoney") @PostMapping("/updateSysUserMoney")
@ApiOperation("修改金币") @ApiOperation("修改金币")
public Result updateSysUserMoney(Long userId, Double money, Integer type) { public Result updateSysUserMoney(Long userId, Double money, Integer type) {
userMoneyService.updateSysMoney(type, userId, money); // userMoneyService.updateSysMoney(type, userId, money);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); // UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setSysUserId(userId); // userMoneyDetails.setSysUserId(userId);
if (type == 1) { // if (type == 1) {
userMoneyDetails.setTitle("[增加金币]平台增加金币:" + money); // userMoneyDetails.setTitle("[增加金币]平台增加金币:" + money);
userMoneyDetails.setContent("[增加金币]平台增加金币:" + money); // userMoneyDetails.setContent("[增加金币]平台增加金币:" + money);
} else { // } else {
userMoneyDetails.setTitle("[减少金币]平台减少金币:" + money); // userMoneyDetails.setTitle("[减少金币]平台减少金币:" + money);
userMoneyDetails.setContent("[减少金币]平台减少金币:" + money); // userMoneyDetails.setContent("[减少金币]平台减少金币:" + money);
} // }
userMoneyDetails.setMoneyType(2); // userMoneyDetails.setMoneyType(2);
userMoneyDetails.setType(type); // userMoneyDetails.setType(type);
// ✅ // // ✅
userMoneyDetails.setClassify(8); // userMoneyDetails.setClassify(8);
userMoneyDetails.setMoney(new BigDecimal(money)); // userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(sdf.format(new Date())); // userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetailsService.save(userMoneyDetails); // userMoneyDetailsService.save(userMoneyDetails);
return Result.success(); return Result.success();
} }

View File

@@ -3,6 +3,7 @@ package com.sqx.modules.app.controller;
import com.sqx.common.utils.Result; import com.sqx.common.utils.Result;
import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService; import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.sys.service.SysUserMoneyService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
public class UserMoneyDetailsController { public class UserMoneyDetailsController {
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
private SysUserMoneyService sysUserMoneyService;
@ApiOperation("钱包明细") @ApiOperation("钱包明细")
@@ -34,7 +36,7 @@ public class UserMoneyDetailsController {
@GetMapping("/selectSysUserMoney") @GetMapping("/selectSysUserMoney")
@ApiOperation("代理钱包") @ApiOperation("代理钱包")
public Result selectSysUserMoney(Long userId){ public Result selectSysUserMoney(Long userId){
return Result.success().put("data",userMoneyService.selectSysUserMoneyByUserId(userId)); return Result.success().put("data",sysUserMoneyService.selectSysUserMoneyByUserId(userId));
} }

View File

@@ -113,15 +113,15 @@ public class AppController {
if (count > 0) { if (count > 0) {
errMsg = "支付宝信息修改失败: 一个支付宝账号仅可绑定一个用户"; errMsg = "支付宝信息修改失败: 一个支付宝账号仅可绑定一个用户";
} }
if (StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { if (errMsg == null && StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) {
errMsg = "支付宝信息修改失败: 姓名与实名认证信息不相符"; errMsg = "支付宝信息修改失败: 姓名与实名认证信息不相符";
} }
if (!DataLimitUtil.isAccessAllowed(zhiFuBao+certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) { if (errMsg == null && !DataLimitUtil.isAccessAllowed(zhiFuBao+certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) {
errMsg = "支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完"; errMsg = "支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完";
} }
if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) { if (errMsg == null && !ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) {
errMsg = "支付宝信息修改失败: 每月可修改次数已用完,请联系管理员"; errMsg = "支付宝信息修改失败: 每月可修改次数已用完,请联系管理员";
} }
@@ -133,42 +133,48 @@ public class AppController {
} }
String authErrMsg = null;
if (StrUtil.isNotBlank(certNum) && !certNum.equals(userInfo.getCertNo())) { if (StrUtil.isNotBlank(certNum) && !certNum.equals(userInfo.getCertNo())) {
if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) { if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) {
errMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; authErrMsg = "实名修改失败: 姓名与绑定支付宝信息不相符";
} }
if (!IdcardUtil.isValidCard(certNum)) { if (authErrMsg == null && !IdcardUtil.isValidCard(certNum)) {
errMsg = "实名修改失败: 身份证号码有误"; authErrMsg = "实名修改失败: 身份证号码有误";
} }
Integer idCount = userInfoService.countCertCount(certName, certNum); if (authErrMsg == null) {
if (idCount > 1) { Integer idCount = userInfoService.countCertCount(certName, certNum);
errMsg = "实名修改失败: 此实名信息已存在"; if (idCount > 1) {
authErrMsg = "实名修改失败: 此实名信息已存在";
}
} }
if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) {
errMsg = "实名修改失败: 每月可修改次数已用完,请联系管理员"; authErrMsg = "实名修改失败: 账号每月可修改次数已用完,请联系管理员";
} }
try { if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(certName, "updateAuthCertInfoByIdCard", 1, "month")) {
aliService.authCertNo(certName, certNum); authErrMsg = "实名修改失败: 此身份证信息次月已绑定过,请联系管理员";
}catch (Exception e) {
ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo");
errMsg = "实名修改失败: 身份证信息不匹配";
} }
if (errMsg != null && errMsg.contains("实名修改失败")) { if (authErrMsg == null) {
return Result.error(errMsg); try {
aliService.authCertNo(certName, certNum);
userInfo.setCertName(certName);
userInfo.setCertNo(certNum);
userInfo.setUpdateTime(DateUtil.date());
userInfoService.update(userInfo, new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, userId));
}catch (Exception e) {
ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo");
ApiAccessLimitUtil.removeKey(certName, "updateAuthCertInfoByIdCard");
authErrMsg = "实名修改失败: 身份证信息不匹配";
}
} }
userInfo.setCertName(certName);
userInfo.setCertNo(certNum);
userInfo.setUpdateTime(DateUtil.date());
userInfoService.update(userInfo, new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, userId));
} }
if (errMsg != null) { if (errMsg != null || authErrMsg != null) {
return Result.error(errMsg); authErrMsg = authErrMsg == null ? "" : authErrMsg;
return Result.error(errMsg == null ? authErrMsg : errMsg + " " + authErrMsg);
} }
return Result.success(); return Result.success();
// 去除首绑支付宝奖励 // 去除首绑支付宝奖励
@@ -232,6 +238,9 @@ public class AppController {
UserInfo userInfo = userInfoService.getByUserId(user.getUserId()); UserInfo userInfo = userInfoService.getByUserId(user.getUserId());
Map<String, Object> map = BeanUtil.beanToMap(user); Map<String, Object> map = BeanUtil.beanToMap(user);
map.putAll(BeanUtil.beanToMap(userInfo)); map.putAll(BeanUtil.beanToMap(userInfo));
if (StrUtil.isBlank(user.getZhiFuBaoName()) && StrUtil.isNotBlank(userInfo.getCertName())) {
map.put("zhiFuBaoName", userInfo.getCertName());
}
return Result.success().put("data", map); return Result.success().put("data", map);
} }

View File

@@ -14,10 +14,6 @@ public interface UserMoneyDao extends BaseMapper<UserMoney> {
void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("amount") Double amount); void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("amount") Double amount);
void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money);
void updateSysAmount(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("amount") Double amount);
@Select("select sum(money) from user_money_details where user_id=#{userId} and classify in (6,1) and (content like '%额外奖励金币%' or content like '获取金币')") @Select("select sum(money) from user_money_details where user_id=#{userId} and classify in (6,1) and (content like '%额外奖励金币%' or content like '获取金币')")
BigDecimal sumMoney(Long userId); BigDecimal sumMoney(Long userId);

View File

@@ -7,13 +7,7 @@ public interface UserMoneyService extends IService<UserMoney> {
UserMoney selectUserMoneyByUserId(Long userId); UserMoney selectUserMoneyByUserId(Long userId);
UserMoney selectSysUserMoneyByUserId(Long userId);
void updateMoney(int i, Long userId, double money); void updateMoney(int i, Long userId, double money);
void updateAmount(int i, Long userId, double amount); void updateAmount(int i, Long userId, double amount);
void updateSysMoney(int i, Long userId, double money);
void updateSysAmount(int i, Long userId, double amount);
} }

View File

@@ -24,18 +24,6 @@ public class UserMoneyServiceImpl extends ServiceImpl<UserMoneyDao, UserMoney> i
baseMapper.updateMayAmount(i,userId,amount); baseMapper.updateMayAmount(i,userId,amount);
} }
@Override
public void updateSysMoney(int i, Long userId, double money){
selectSysUserMoneyByUserId(userId);
baseMapper.updateSysMoney(i,userId,money);
}
@Override
public void updateSysAmount(int i, Long userId, double amount){
selectSysUserMoneyByUserId(userId);
baseMapper.updateSysAmount(i,userId,amount);
}
@Override @Override
public UserMoney selectUserMoneyByUserId(Long userId){ public UserMoney selectUserMoneyByUserId(Long userId){
UserMoney userMoney = baseMapper.selectOne(new QueryWrapper<UserMoney>().eq("user_id", userId)); UserMoney userMoney = baseMapper.selectOne(new QueryWrapper<UserMoney>().eq("user_id", userId));
@@ -48,19 +36,4 @@ public class UserMoneyServiceImpl extends ServiceImpl<UserMoneyDao, UserMoney> i
} }
return userMoney; return userMoney;
} }
@Override
public UserMoney selectSysUserMoneyByUserId(Long userId){
UserMoney userMoney = baseMapper.selectOne(new QueryWrapper<UserMoney>().eq("sys_user_id", userId));
if(userMoney==null){
userMoney=new UserMoney();
userMoney.setSysUserId(userId);
userMoney.setMoney(new BigDecimal("0.00"));
userMoney.setAmount(new BigDecimal("0.00"));
baseMapper.insert(userMoney);
}
return userMoney;
}
} }

View File

@@ -44,6 +44,7 @@ import com.sqx.common.utils.Result;
import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.dao.AuthCertNoDTO;
import com.sqx.modules.app.dao.MsgDao; import com.sqx.modules.app.dao.MsgDao;
import com.sqx.modules.app.dao.UserDao; import com.sqx.modules.app.dao.UserDao;
import com.sqx.modules.app.dao.UserVipDao;
import com.sqx.modules.app.entity.*; import com.sqx.modules.app.entity.*;
import com.sqx.modules.app.service.*; import com.sqx.modules.app.service.*;
import com.sqx.modules.app.utils.JwtUtils; import com.sqx.modules.app.utils.JwtUtils;
@@ -82,11 +83,9 @@ import weixin.popular.util.JsonUtil;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.stream.Collectors;
/** /**
* 用户 * 用户
@@ -124,15 +123,17 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
private SysUserService sysUserService; private SysUserService sysUserService;
private final AliService aliService; private final AliService aliService;
private final UserInfoService userInfoService; private final UserInfoService userInfoService;
private final UserVipDao userVipDao;
@Value("${spring.profiles.active}") @Value("${spring.profiles.active}")
private String profiles; private String profiles;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
public UserServiceImpl(@Lazy AliService aliService, UserInfoService userInfoService) { public UserServiceImpl(@Lazy AliService aliService, UserInfoService userInfoService, UserVipDao userVipDao) {
this.aliService = aliService; this.aliService = aliService;
this.userInfoService = userInfoService; this.userInfoService = userInfoService;
this.userVipDao = userVipDao;
} }
@Override @Override
@@ -1419,7 +1420,34 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
@Override @Override
public int userMessage(String date, int type, String qdCode, Integer vipType) { public int userMessage(String date, int type, String qdCode, Integer vipType) {
return baseMapper.userMessage(date, type, qdCode, vipType); DateTime dateTime;
if (type == 0) {
dateTime = DateUtil.beginOfDay(DateUtil.parseDate(date));
}else if (type == 1) {
dateTime = DateUtil.beginOfMonth(DateUtil.parseDate(date));
}else {
dateTime = DateUtil.beginOfYear(DateUtil.parseDate(date));
}
LambdaQueryWrapper<UserEntity> queryWrapper = new LambdaQueryWrapper<UserEntity>()
.ge(UserEntity::getCreateTime, dateTime);
if (StrUtil.isNotBlank(qdCode)) {
queryWrapper.eq(UserEntity::getQdCode, qdCode);
}
Set<Long> useridList = baseMapper.selectList(queryWrapper.select(UserEntity::getUserId))
.stream().map(UserEntity::getUserId).collect(Collectors.toSet());
if (useridList.isEmpty()) {
return 0;
}
LambdaQueryWrapper<UserVip> vipLambdaQueryWrapper = new LambdaQueryWrapper<UserVip>().in(UserVip::getUserId, useridList)
.eq(UserVip::getIsVip, 2);
if (vipType != null) {
vipLambdaQueryWrapper.eq(UserVip::getVipType, vipType);
}
return userVipDao.selectCount(vipLambdaQueryWrapper);
} }

View File

@@ -22,8 +22,8 @@ public interface CourseDetailsDao extends BaseMapper<CourseDetails> {
* @param price 全剧价格 * @param price 全剧价格
* @param wholesalePrice 10集价格 * @param wholesalePrice 10集价格
*/ */
@Cacheable(cacheNames = "courseSets" ,key = "#courseId") @Cacheable(cacheNames = "courseSets", key = "#courseId")
List<CourseDetailsSetVo> courseSets(@Param("courseId") Long courseId, @Param("collect") Long collect, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); List<CourseDetailsSetVo> courseSets(@Param("courseId") Long courseId, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice);
List<CourseDetails> findByCourseId(@Param("id") Long id, @Param("userId") Long userId); List<CourseDetails> findByCourseId(@Param("id") Long id, @Param("userId") Long userId);
@@ -41,7 +41,7 @@ public interface CourseDetailsDao extends BaseMapper<CourseDetails> {
*/ */
Map<String, Object> countCourse(Long courseId); Map<String, Object> countCourse(Long courseId);
@Cacheable(cacheNames = "courseCount" ,key = "#courseId") @Cacheable(cacheNames = "courseCount", key = "#courseId")
Integer countCourseByCourseId(Long courseId); Integer countCourseByCourseId(Long courseId);
List<CourseDetails> countByCourseId(); List<CourseDetails> countByCourseId();

View File

@@ -34,7 +34,6 @@ import com.sqx.modules.course.entity.CourseUser;
import com.sqx.modules.course.service.CourseDetailsService; import com.sqx.modules.course.service.CourseDetailsService;
import com.sqx.modules.course.vo.CourseDetailsIn; import com.sqx.modules.course.vo.CourseDetailsIn;
import com.sqx.modules.course.vo.CourseDetailsSetVo; import com.sqx.modules.course.vo.CourseDetailsSetVo;
import com.sqx.modules.course.vo.CourseDetailsVo;
import com.sqx.modules.orders.dao.OrdersDao; import com.sqx.modules.orders.dao.OrdersDao;
import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.orders.service.OrdersService;
import com.sqx.modules.redisService.impl.RedisServiceImpl; import com.sqx.modules.redisService.impl.RedisServiceImpl;
@@ -53,7 +52,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.concurrent.atomic.AtomicReference;
@Service @Service
@Slf4j @Slf4j
@@ -146,7 +145,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cour
} else { } else {
course.setViewCounts(course.getViewCounts() + 1); course.setViewCounts(course.getViewCounts() + 1);
} }
if (ApiAccessLimitUtil.isAccessAllowed("setCourseView:" + course.getCourseId(), "updateAuthCertInfo", 1, 600)) { if (ApiAccessLimitUtil.isAccessAllowed(course.getCourseId().toString(), "updateWeekCourseView", 1, 600)) {
int courseViewCount = redisServiceImpl.getCourseWeekViewCount(course.getCourseId()); int courseViewCount = redisServiceImpl.getCourseWeekViewCount(course.getCourseId());
course.setWeekView(courseViewCount); course.setWeekView(courseViewCount);
} }
@@ -179,9 +178,9 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cour
} }
List<CourseDetailsSetVo> courseDetailsSetVos; List<CourseDetailsSetVo> courseDetailsSetVos;
if (freeWatch || courseUser != null) { if (freeWatch || courseUser != null) {
courseDetailsSetVos = baseMapper.courseSets(courseId, collect == null ? 0L : 1L, 2, null, null); courseDetailsSetVos = baseMapper.courseSets(courseId,2, null, null);
} else { } else {
courseDetailsSetVos = baseMapper.courseSets(courseId, collect == null ? 0L : 1L, 1, bean.getPrice(), bean.getWholesalePrice()); courseDetailsSetVos = baseMapper.courseSets(courseId,1, bean.getPrice(), bean.getWholesalePrice());
} }
if (sort != null && sort > 2) { if (sort != null && sort > 2) {
startSort = sort - 3; startSort = sort - 3;
@@ -196,6 +195,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cour
if ((!freeWatch)) { if ((!freeWatch)) {
detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId);
} }
AtomicReference<CourseDetailsSetVo> current = new AtomicReference<>(new CourseDetailsSetVo());
Set<Long> finalDetailsId = detailsId; Set<Long> finalDetailsId = detailsId;
int finalStartSort = startSort; int finalStartSort = startSort;
int finalEndSort = endSort; int finalEndSort = endSort;
@@ -203,6 +203,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cour
//当前 //当前
if (courseCollect != null && s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { if (courseCollect != null && s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) {
s.setCurrent(1); s.setCurrent(1);
current.set(s);
} }
// 不免费 3集以后 (已买的不为空 并不在已买的包含) // 不免费 3集以后 (已买的不为空 并不在已买的包含)
if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) {
@@ -216,12 +217,15 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cour
}); });
if (courseCollect == null) { if (courseCollect == null) {
courseDetailsSetVos.get(0).setCurrent(1); courseDetailsSetVos.get(0).setCurrent(1);
current.set(courseDetailsSetVos.get(0));
} }
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
setCourseView(bean); setCourseView(bean);
}); });
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("current", current.get());
map.put("title", bean.getTitle()); map.put("title", bean.getTitle());
map.put("collect", collect == null ? 0L : 1L);
map.put("list", courseDetailsSetVos); map.put("list", courseDetailsSetVos);
return new Result().put("data", map); return new Result().put("data", map);
} }

View File

@@ -1,12 +1,16 @@
package com.sqx.modules.course.vo; package com.sqx.modules.course.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
public class CourseDetailsSetVo { public class CourseDetailsSetVo {
@JsonSerialize(using = ToStringSerializer.class)
private Long courseId; private Long courseId;
@JsonSerialize(using = ToStringSerializer.class)
private Long courseDetailsId; private Long courseDetailsId;
private String courseDetailsName; private String courseDetailsName;
private Integer current = 0; private Integer current = 0;

View File

@@ -127,6 +127,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
cashOut.setRate(0.00); cashOut.setRate(0.00);
cashOut.setUserType(1); cashOut.setUserType(1);
cashOut.setCreateAt(DateUtil.now()); cashOut.setCreateAt(DateUtil.now());
cashOut.setUserType(1);
cashOut.setWithdrawType(WithdrawTypeEnum.RED_ENVELOPE.getValue()); cashOut.setWithdrawType(WithdrawTypeEnum.RED_ENVELOPE.getValue());
//最高提现金额 //最高提现金额
@@ -136,7 +137,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
cashOut.setStatus(4); cashOut.setStatus(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, userInfo.getUserId(), true, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails( UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
userInfo.getUserId(), null, null, title, 4, 2, 1, userInfo.getUserId(), null, null, title, 4, 2, 1,

View File

@@ -24,6 +24,7 @@ import com.sqx.modules.invite.service.InviteService;
import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.entity.SysUserEntity;
import com.sqx.modules.sys.entity.SysUserMoneyDetails; import com.sqx.modules.sys.entity.SysUserMoneyDetails;
import com.sqx.modules.sys.service.SysUserMoneyDetailsService; import com.sqx.modules.sys.service.SysUserMoneyDetailsService;
import com.sqx.modules.sys.service.SysUserMoneyService;
import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.sys.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -52,6 +53,8 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
@Autowired @Autowired
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
@Autowired @Autowired
private SysUserMoneyService sysUserMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
@Autowired @Autowired
private InviteAwardService inviteAwardService; private InviteAwardService inviteAwardService;
@@ -204,7 +207,7 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
// 金币 // 金币
int money = Integer.parseInt(commonInfoService.findOne(911).getValue()); int money = Integer.parseInt(commonInfoService.findOne(911).getValue());
if (money > 0 && userEntity.getUserId() != 1) { if (money > 0 && userEntity.getUserId() != 1) {
userMoneyService.updateMoney(1, userEntity.getUserId(), money); // userMoneyService.updateMoney(1, userEntity.getUserId(), money);
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userEntity.getUserId()); userMoneyDetails.setUserId(userEntity.getUserId());
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
@@ -220,8 +223,9 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
// 更新邀请人钱包 // 更新邀请人钱包
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userEntity.getUserId()); UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userEntity.getUserId());
userMoney.setMoney(userMoney.getMoney() == null ? BigDecimal.valueOf(money) : userMoney.getMoney().add(BigDecimal.valueOf(money)));
userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? new BigDecimal(money) : userMoney.getInviteIncomeCoin().add(new BigDecimal(money))); userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? new BigDecimal(money) : userMoney.getInviteIncomeCoin().add(new BigDecimal(money)));
userMoneyService.update(userMoney, new LambdaQueryWrapper<UserMoney>().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); userMoneyService.update(null, new LambdaQueryWrapper<UserMoney>().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId()));
} }
//助力活动 //助力活动
@@ -365,7 +369,7 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
if (sumMoney.compareTo(BigDecimal.ZERO) <= 0) { if (sumMoney.compareTo(BigDecimal.ZERO) <= 0) {
return result; return result;
} }
userMoneyService.updateSysAmount(1, sysUserEntity.getUserId(), sumMoney.doubleValue()); sysUserMoneyService.updateSysMoney(1, sysUserEntity.getUserId(), sumMoney.doubleValue());
SysUserMoneyDetails userMoneyDetails = new SysUserMoneyDetails(); SysUserMoneyDetails userMoneyDetails = new SysUserMoneyDetails();
userMoneyDetails.setSysUserId(sysUserEntity.getUserId()); userMoneyDetails.setSysUserId(sysUserEntity.getUserId());
userMoneyDetails.setUserId(sysUserEntity.getUserId()); userMoneyDetails.setUserId(sysUserEntity.getUserId());

View File

@@ -41,7 +41,8 @@ public class CashOutTask{
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); boolean isUser = cashOut.getUserType() != 2;
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), isUser, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) { if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) {
cashOut.setState(1); cashOut.setState(1);
} else { } else {

View File

@@ -53,7 +53,8 @@ public class CashOutTask2{
cashOut.setState(4); cashOut.setState(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); boolean isUser = cashOut.getUserType() != 2;
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), isUser, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) { if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) {
cashOut.setState(1); cashOut.setState(1);
} else { } else {

View File

@@ -27,7 +27,7 @@ public class TempCashOutTask{
logger.info("提现开始"); logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectTemp(); List<CashOut> cashOuts = cashOutDao.selectTemp();
for (CashOut cashOut : cashOuts) { for (CashOut cashOut : cashOuts) {
BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getMoney()); BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getUserId(), cashOut.getUserType() != 2, cashOut.getMoney());
logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp)); logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){ if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
logger.info("success{} ", cashOut.getOrderNumber()); logger.info("success{} ", cashOut.getOrderNumber());

View File

@@ -32,8 +32,10 @@ import com.sqx.modules.pay.entity.PayDetails;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.entity.SysUserEntity;
import com.sqx.modules.sys.entity.SysUserMoney;
import com.sqx.modules.sys.entity.SysUserMoneyDetails; import com.sqx.modules.sys.entity.SysUserMoneyDetails;
import com.sqx.modules.sys.service.SysUserMoneyDetailsService; import com.sqx.modules.sys.service.SysUserMoneyDetailsService;
import com.sqx.modules.sys.service.SysUserMoneyService;
import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.sys.service.SysUserService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -69,6 +71,8 @@ public class TempOrdersTask {
@Resource @Resource
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
@Resource @Resource
private SysUserMoneyService sysUserMoneyService;
@Resource
private SysUserService sysUserService; private SysUserService sysUserService;
@Resource @Resource
private InviteDao inviteDao; private InviteDao inviteDao;
@@ -114,7 +118,7 @@ public class TempOrdersTask {
Orders orders = ordersDao.selectOne(new LambdaQueryWrapper<Orders>() Orders orders = ordersDao.selectOne(new LambdaQueryWrapper<Orders>()
.eq(Orders::getOrdersNo, details.getOrderId())); .eq(Orders::getOrdersNo, details.getOrderId()));
BaseResp baseResp = wuyouPay.queryOrder(details.getTradeNo(), details.getMoney().toString(), "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/131.0.0.0"); BaseResp baseResp = wuyouPay.queryOrder(details.getTradeNo(), details.getUserId(), details.getMoney().toString(), "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/131.0.0.0");
logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp)); logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getCode() == null || baseResp.getCode() != 200) { if (baseResp.getCode() == null || baseResp.getCode() != 200) {
logger.info("code错误跳过"); logger.info("code错误跳过");
@@ -189,22 +193,6 @@ public class TempOrdersTask {
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
courseService.incrWeekPayCount(order.getCourseId()); courseService.incrWeekPayCount(order.getCourseId());
}); });
//Map<String, Object> map = inviteService.updateInvite(byUser, DateUtil.now(), user.getUserId(), order.getPayMoney());
// Object oneUserId = map.get("oneUserId");
// if (oneUserId != null) {
// order.setOneUserId(Long.parseLong(String.valueOf(oneUserId)));
// order.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney"))));
// }
// Object twoUserId = map.get("twoUserId");
// if (twoUserId != null) {
// order.setTwoUserId(Long.parseLong(String.valueOf(twoUserId)));
// order.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney"))));
// }
// Object sysUserId = map.get("sysUserId");
// if (sysUserId != null) {
// order.setSysUserId(Long.parseLong(String.valueOf(sysUserId)));
// order.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney"))));
// }
} }
@Transactional @Transactional
@@ -254,14 +242,14 @@ public class TempOrdersTask {
sysUser.getUserId(), sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2, sysUser.getUserId(), sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2,
new BigDecimal(qdAward), "推广人员首次达标,额外奖励现金红包" + qdAward, 2); new BigDecimal(qdAward), "推广人员首次达标,额外奖励现金红包" + qdAward, 2);
userMoneyService.updateSysAmount(1, sysUser.getUserId(), Double.parseDouble(qdAward)); sysUserMoneyService.updateSysMoney(1, sysUser.getUserId(), Double.parseDouble(qdAward));
sysUserMoneyDetailsService.save(userMoneyDetails4); sysUserMoneyDetailsService.save(userMoneyDetails4);
UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId()); SysUserMoney sysUserMoney = sysUserMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId());
userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward))); sysUserMoney.setInviteIncomeMoney(sysUserMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward)));
userMoneyService.update(userMoney, new LambdaQueryWrapper<UserMoney>() sysUserMoneyService.update(sysUserMoney, new LambdaQueryWrapper<SysUserMoney>()
.eq(UserMoney::getSysUserId, userMoney.getSysUserId()) .eq(SysUserMoney::getUserId, sysUserMoney.getUserId())
.eq(UserMoney::getId, userMoney.getId())); .eq(SysUserMoney::getId, sysUserMoney.getId()));
} }
} }
} }

View File

@@ -134,10 +134,10 @@ public class OrdersController extends AbstractController {
//日 //日
Double dayMoney = ordersService.selectOrdersMoney(1, 1, 1, dateTime, courseId, sysUserId); Double dayMoney = ordersService.selectOrdersMoney(1, 1, 1, dateTime, courseId, sysUserId);
Map<String, Double> result = new HashMap<>(); Map<String, Double> result = new HashMap<>();
result.put("sumMoney", sumMoney); result.put("sumMoney", sumMoney == null ? 0 : sumMoney);
result.put("yearMoney", yearMoney); result.put("yearMoney", yearMoney == null ? 0 : yearMoney);
result.put("monthMoney", monthMoney); result.put("monthMoney", monthMoney == null ? 0 : monthMoney);
result.put("dayMoney", dayMoney); result.put("dayMoney", dayMoney == null ? 0 : dayMoney);
return Result.success().put("data", result); return Result.success().put("data", result);
} }
@@ -151,12 +151,12 @@ public class OrdersController extends AbstractController {
//渠道 //渠道
Double qdMoney = ordersService.selectFenXiaoMoney(3, sysUserId, flag, time); Double qdMoney = ordersService.selectFenXiaoMoney(3, sysUserId, flag, time);
//总分销 //总分销
Double sumMoney = ordersService.selectFenXiaoMoney(4, sysUserId, flag, time); // Double sumMoney = ordersService.selectFenXiaoMoney(4, sysUserId, flag, time);
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("oneMoney", oneMoney); result.put("oneMoney", oneMoney);
result.put("twoMoney", twoMoney); result.put("twoMoney", twoMoney);
result.put("qdMoney", qdMoney); result.put("qdMoney", qdMoney);
result.put("sumMoney", sumMoney); result.put("sumMoney", oneMoney + twoMoney + qdMoney);
return Result.success().put("data", result); return Result.success().put("data", result);
} }

View File

@@ -31,6 +31,9 @@ import com.sqx.modules.pay.entity.AliPayWithdrawModel;
import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.service.CashOutService;
import com.sqx.modules.pay.service.PayDetailsService; import com.sqx.modules.pay.service.PayDetailsService;
import com.sqx.modules.sys.entity.SysUserMoneyDetails;
import com.sqx.modules.sys.service.SysUserMoneyDetailsService;
import com.sqx.modules.sys.service.SysUserMoneyService;
import com.sqx.modules.utils.AmountCalUtils; import com.sqx.modules.utils.AmountCalUtils;
import com.sqx.modules.utils.excel.ExcelData; import com.sqx.modules.utils.excel.ExcelData;
import com.sqx.modules.utils.excel.ExportExcelUtils; import com.sqx.modules.utils.excel.ExportExcelUtils;
@@ -86,6 +89,8 @@ public class CashController {
@Autowired @Autowired
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
@Autowired @Autowired
private SysUserMoneyDetailsService sysUserMoneyDetailsService;
@Autowired
private MessageService messageService; private MessageService messageService;
@Autowired @Autowired
private InviteMoneyDao inviteMoneyDao; private InviteMoneyDao inviteMoneyDao;
@@ -93,6 +98,8 @@ public class CashController {
private OrdersService ordersService; private OrdersService ordersService;
@Autowired @Autowired
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
@Autowired
private SysUserMoneyService sysUserMoneyService;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@RequestMapping(value = "/sendMsgByUserId", method = RequestMethod.GET) @RequestMapping(value = "/sendMsgByUserId", method = RequestMethod.GET)
@@ -460,18 +467,19 @@ public class CashController {
} }
//将金币退还 //将金币退还
if (one.getSysUserId() != null) { if (one.getSysUserId() != null) {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); SysUserMoneyDetails sysUserMoneyDetails = new SysUserMoneyDetails();
userMoneyDetails.setSysUserId(one.getSysUserId()); sysUserMoneyDetails.setSysUserId(one.getSysUserId());
userMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v); sysUserMoneyDetails.setUserId(one.getSysUserId());
userMoneyDetails.setContent(content); sysUserMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v);
userMoneyDetails.setType(1); sysUserMoneyDetails.setContent(content);
sysUserMoneyDetails.setType(1);
// ✅ // ✅
userMoneyDetails.setClassify(4); sysUserMoneyDetails.setClassify(4);
userMoneyDetails.setMoney(new BigDecimal(v)); sysUserMoneyDetails.setMoney(new BigDecimal(v));
userMoneyDetails.setCreateTime(sdf.format(now)); sysUserMoneyDetails.setCreateTime(sdf.format(now));
userMoneyDetails.setMoneyType(2); sysUserMoneyDetails.setMoneyType(2);
userMoneyDetailsService.save(userMoneyDetails); sysUserMoneyDetailsService.save(sysUserMoneyDetails);
userMoneyService.updateSysMoney(1, userId, v); sysUserMoneyService.updateSysMoney(1, userId, v);
} else { } else {
UserEntity userInfo = userService.queryByUserId(userId); UserEntity userInfo = userService.queryByUserId(userId);
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();

View File

@@ -124,7 +124,7 @@ public class WuyouController {
return Result.success().put("data", data); return Result.success().put("data", data);
} }
BaseResp baseResp = wuyouPay.payOrder(payDetails.getTradeNo(), order.getPayMoney().toString(), BaseResp baseResp = wuyouPay.payOrder(payDetails.getTradeNo(), order.getUserId(), order.getPayMoney().toString(),
request.getHeader("User-Agent"), String.format("%d-%d", order.getCourseId(), order.getCourseDetailsId()), request.getHeader("User-Agent"), String.format("%d-%d", order.getCourseId(), order.getCourseDetailsId()),
payType); payType);
if (baseResp.getCode() == null) { if (baseResp.getCode() == null) {
@@ -154,7 +154,7 @@ public class WuyouController {
return Result.success().put("data", 1); return Result.success().put("data", 1);
} }
BaseResp baseResp = wuyouPay.queryOrder(payDetails.getTradeNo(), order.getPayMoney().toString(), request.getHeader("User-Agent")); BaseResp baseResp = wuyouPay.queryOrder(payDetails.getTradeNo(), order.getUserId(), order.getPayMoney().toString(), request.getHeader("User-Agent"));
if (baseResp.getCode() == null || baseResp.getCode() != 200) { if (baseResp.getCode() == null || baseResp.getCode() != 200) {
return Result.success().put("data", 0); return Result.success().put("data", 0);
} }
@@ -205,10 +205,24 @@ public class WuyouController {
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto)); log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto));
String orderNo = notifyDto.getOut_trade_no();
long userId = 0L;
String[] split = orderNo.split("-");
if (split.length != 2) {
log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto));
return "success";
}
orderNo = split[0];
userId = Long.parseLong(split[1]);
DateTime offsetMinute = DateUtil.offsetMinute(new Date(), -30); DateTime offsetMinute = DateUtil.offsetMinute(new Date(), -30);
String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss"); String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss");
List<PayDetails> details = payDetailsDao.selectList(new LambdaQueryWrapper<PayDetails>() LambdaQueryWrapper<PayDetails> detailsLambdaQueryWrapper = new LambdaQueryWrapper<PayDetails>()
.eq(PayDetails::getTradeNo, notifyDto.getOut_trade_no()).ge(PayDetails::getCreateTime, format)); .eq(PayDetails::getTradeNo, orderNo).ge(PayDetails::getCreateTime, format);
if (userId != 0) {
detailsLambdaQueryWrapper.eq(PayDetails::getUserId, userId);
}
List<PayDetails> details = payDetailsDao.selectList(detailsLambdaQueryWrapper);
if (details.isEmpty()) { if (details.isEmpty()) {
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto)); log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
return "success"; return "success";
@@ -265,7 +279,29 @@ public class WuyouController {
log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign); log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign);
// return "签名错误"; // return "签名错误";
} }
CashOut cashOut = cashOutDao.selectOne(new QueryWrapper<CashOut>().eq("order_number", notifyDto.getOut_trade_no()));
String orderNo = notifyDto.getOut_trade_no();
long userId = 0L;
String[] split = orderNo.split("-");
if (split.length != 2) {
log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto));
return;
}
orderNo = split[0];
String sub = split[1];
String[] split1 = sub.split(":");
if (split1.length != 2) {
log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto));
return;
}
userId = Long.parseLong(split1[0]);
QueryWrapper<CashOut> orderNumber = new QueryWrapper<CashOut>().eq("order_number", orderNo);
if (userId != 0) {
orderNumber.eq("user_id", userId);
}
CashOut cashOut = cashOutDao.selectOne(orderNumber);
if (cashOut != null) { if (cashOut != null) {
if ("2".equals(notifyDto.getStatus())) { if ("2".equals(notifyDto.getStatus())) {
cashOut.setState(1); cashOut.setState(1);

View File

@@ -9,6 +9,7 @@ import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author fang * @author fang
@@ -46,4 +47,6 @@ public interface CashOutDao extends BaseMapper<CashOut> {
BigDecimal selectSumMoney(@Param("userId") Long userId, @Param("state") Integer state); BigDecimal selectSumMoney(@Param("userId") Long userId, @Param("state") Integer state);
List<CashOut> selectSumByUserIdList(ArrayList<Long> userIdList, Integer state); List<CashOut> selectSumByUserIdList(ArrayList<Long> userIdList, Integer state);
List<CashOut> countByUserIdList(Set<Long> userIdList);
} }

View File

@@ -36,6 +36,10 @@ import com.sqx.modules.pay.service.CashOutService;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.entity.SysUserEntity;
import com.sqx.modules.sys.entity.SysUserMoney;
import com.sqx.modules.sys.entity.SysUserMoneyDetails;
import com.sqx.modules.sys.service.SysUserMoneyDetailsService;
import com.sqx.modules.sys.service.SysUserMoneyService;
import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.sys.service.SysUserService;
import com.sqx.modules.utils.AliPayOrderUtil; import com.sqx.modules.utils.AliPayOrderUtil;
import com.sqx.modules.utils.AmountCalUtils; import com.sqx.modules.utils.AmountCalUtils;
@@ -87,8 +91,12 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
@Autowired @Autowired
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
@Autowired @Autowired
private SysUserMoneyService sysUserMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
@Autowired @Autowired
private SysUserMoneyDetailsService sysUserMoneyDetailsService;
@Autowired
private InviteMoneyService inviteMoneyService; private InviteMoneyService inviteMoneyService;
@Autowired @Autowired
private SysUserService sysUserService; private SysUserService sysUserService;
@@ -118,7 +126,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
} }
PageHelper.startPage(page, limit); PageHelper.startPage(page, limit);
List<CashOut> cashOutList = list(queryWrapper); List<CashOut> cashOutList = list(queryWrapper.eq(CashOut::getUserType, 1).orderByDesc(CashOut::getCreateAt));
if (!isApp) { if (!isApp) {
ArrayList<Long> userIdList = new ArrayList<>(); ArrayList<Long> userIdList = new ArrayList<>();
@@ -414,64 +422,65 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
@Override @Override
@Transactional @Transactional
public Result sysCashMoney(Long userId, Double money) { public Result sysCashMoney(Long userId, Double money) {
if (money == null || money <= 0.00) { // if (money == null || money <= 0.00) {
return Result.error("请不要输入小于0的数字,请输入正确的提现金币!"); // return Result.error("请不要输入小于0的数字,请输入正确的提现金币!");
} // }
//最低提现金币 // //最低提现金币
CommonInfo one = commonInfoService.findOne(112); // CommonInfo one = commonInfoService.findOne(112);
if (one != null && money < Double.parseDouble(one.getValue())) { // if (one != null && money < Double.parseDouble(one.getValue())) {
return Result.error("输入金币不满足最低提现金币,请重新输入!"); // return Result.error("输入金币不满足最低提现金币,请重新输入!");
} // }
//最高提现金币 // //最高提现金币
CommonInfo one2 = commonInfoService.findOne(153); // CommonInfo one2 = commonInfoService.findOne(153);
if (one2 != null && money >= Double.parseDouble(one2.getValue())) { // if (one2 != null && money >= Double.parseDouble(one2.getValue())) {
return Result.error(-100, "输入金币过大,不能大于" + one2.getValue() + ",请重新输入!"); // return Result.error(-100, "输入金币过大,不能大于" + one2.getValue() + ",请重新输入!");
} // }
//手续费 // //手续费
CommonInfo one1 = commonInfoService.findOne(152); // CommonInfo one1 = commonInfoService.findOne(152);
double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); // double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue()));
if (mul < 0.01) { // if (mul < 0.01) {
mul = 0.01; // mul = 0.01;
} // }
UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); // SysUserMoney sysUserMoney = sysUserMoneyService.selectSysUserMoneyByUserId(userId);
//
SysUserEntity sysUserEntity = sysUserService.getById(userId); // SysUserEntity sysUserEntity = sysUserService.getById(userId);
//提现判断金币是否足够 金币=提现金币+手续费 // //提现判断金币是否足够 金币=提现金币+手续费
double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); // double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue();
// 用户金币足够 // // 用户金币足够
if (userMoney.getMoney().doubleValue() >= moneySum) { // if (sysUserMoney.getMoney().doubleValue() >= moneySum) {
//扣除可提现金币 // //扣除可提现金币
userMoneyService.updateSysMoney(2, userId, moneySum); // sysUserMoneyService.updateSysMoney(2, userId, moneySum);
//增加金币操作记录 // //增加金币操作记录
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); // UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setSysUserId(userId); // userMoneyDetails.setSysUserId(userId);
userMoneyDetails.setTitle("提现:" + money); // userMoneyDetails.setTitle("提现:" + money);
userMoneyDetails.setContent("提现:" + money + ",手续费:" + mul + ",总计:" + moneySum); // userMoneyDetails.setContent("提现:" + money + ",手续费:" + mul + ",总计:" + moneySum);
userMoneyDetails.setType(2); // userMoneyDetails.setType(2);
// ✅ // // ✅
userMoneyDetails.setClassify(4); // userMoneyDetails.setClassify(4);
userMoneyDetails.setMoney(new BigDecimal(moneySum)); // userMoneyDetails.setMoney(new BigDecimal(moneySum));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userMoneyDetails.setCreateTime(sdf.format(new Date())); // userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetails.setMoneyType(1); // userMoneyDetails.setMoneyType(1);
userMoneyDetailsService.save(userMoneyDetails); // userMoneyDetailsService.save(userMoneyDetails);
CashOut cashOut = new CashOut(); // CashOut cashOut = new CashOut();
cashOut.setState(0); // cashOut.setState(0);
cashOut.setZhifubao(sysUserEntity.getZhiFuBao()); // cashOut.setZhifubao(sysUserEntity.getZhiFuBao());
cashOut.setZhifubaoName(sysUserEntity.getZhiFuBaoName()); // cashOut.setZhifubaoName(sysUserEntity.getZhiFuBaoName());
cashOut.setMoney(money.toString()); // cashOut.setMoney(money.toString());
cashOut.setCreateAt(sdf.format(new Date())); // cashOut.setCreateAt(sdf.format(new Date()));
cashOut.setUserId(sysUserEntity.getUserId()); // cashOut.setUserId(sysUserEntity.getUserId());
cashOut.setRate(mul); // cashOut.setRate(mul);
cashOut.setOrderNumber(String.valueOf(System.currentTimeMillis())); // cashOut.setOrderNumber(String.valueOf(System.currentTimeMillis()));
cashOut.setSysUserId(userId); // cashOut.setSysUserId(userId);
cashOut.setUserType(2); // cashOut.setUserType(2);
baseMapper.insert(cashOut); // baseMapper.insert(cashOut);
// inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId); //// inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId);
return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); // return Result.success("提现成功,将在三个工作日内到账,请耐心等待!");
} else { // } else {
return Result.error("金币不足,请输入正确的提现金币!"); // return Result.error("金币不足,请输入正确的提现金币!");
} // }
return Result.success("作废");
} }
@@ -526,11 +535,13 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
CashOut cashOut = new CashOut(); CashOut cashOut = new CashOut();
cashOut.setIsOut(false); cashOut.setIsOut(false);
cashOut.setMoney(money.toString()); cashOut.setMoney(money.toString());
cashOut.setUserId(userId);
if (isSys) { if (isSys) {
cashOut.setSysUserId(userId); cashOut.setUserType(2);
} else { } else {
cashOut.setUserId(userId); cashOut.setUserType(1);
} }
cashOut.setZhifubao(alipayAccount); cashOut.setZhifubao(alipayAccount);
cashOut.setZhifubaoName(alipayName); cashOut.setZhifubaoName(alipayName);
@@ -542,49 +553,77 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("[提现]");
userMoneyDetails.setContent("提现:" + money + "");
userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
// ✅
userMoneyDetails.setClassify(4);
userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(DateUtil.now());
userMoneyDetails.setMoneyType(1);
UserMoney userMoney;
if (isSys) { if (isSys) {
userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); SysUserMoneyDetails sysUserMoneyDetails = new SysUserMoneyDetails();
} else { sysUserMoneyDetails.setUserId(userId);
userMoney = userMoneyService.selectUserMoneyByUserId(userId); sysUserMoneyDetails.setSysUserId(userId);
} sysUserMoneyDetails.setTitle("[提现]");
//提现判断余额是否足够 sysUserMoneyDetails.setContent("提现:" + money + "");
if (userMoney.getAmount().doubleValue() < money) { sysUserMoneyDetails.setType(2);
return Result.success("可提现余额不足!"); sysUserMoneyDetails.setState(2);
} // ✅
sysUserMoneyDetails.setClassify(4);
sysUserMoneyDetails.setMoney(new BigDecimal(money));
sysUserMoneyDetails.setCreateTime(DateUtil.now());
sysUserMoneyDetails.setMoneyType(1);
SysUserMoney sysUserMoney = sysUserMoneyService.selectSysUserMoneyByUserId(userId);
//提现判断余额是否足够
if (sysUserMoney.getMoney().doubleValue() < money) {
return Result.success("可提现余额不足!");
}
if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) {
cashOut.setStatus(4);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), false, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
sysUserMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(1);
}
if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) { if (baseResp.getErrorMsg() != null) {
cashOut.setStatus(4); return Result.error(baseResp.getErrorMsg());
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); }
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { } else {
sysUserMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(3);
}
sysUserMoneyDetailsService.save(sysUserMoneyDetails);
baseMapper.insert(cashOut);
sysUserMoneyService.updateSysMoney(2, userId, money);
} else {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("[提现]");
userMoneyDetails.setContent("提现:" + money + "");
userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
// ✅
userMoneyDetails.setClassify(4);
userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(DateUtil.now());
userMoneyDetails.setMoneyType(1);
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userId);
//提现判断余额是否足够
if (userMoney.getAmount().doubleValue() < money) {
return Result.success("可提现余额不足!");
}
if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) {
cashOut.setStatus(4);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), true, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
userMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(1);
}
if (baseResp.getErrorMsg() != null) {
return Result.error(baseResp.getErrorMsg());
}
} else {
userMoneyDetails.setContent("成功提现:" + money); userMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(1); cashOut.setState(3);
} }
userMoneyDetailsService.save(userMoneyDetails);
if (baseResp.getErrorMsg() != null) { baseMapper.insert(cashOut);
return Result.error(baseResp.getErrorMsg());
}
} else {
userMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(3);
}
userMoneyDetailsService.save(userMoneyDetails);
baseMapper.insert(cashOut);
if (isSys) {
userMoneyService.updateSysAmount(2, userId, money);
} else {
userMoneyService.updateAmount(2, userId, money); userMoneyService.updateAmount(2, userId, money);
} }
return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); return Result.success("提现成功,将在三个工作日内到账,请耐心等待!");
@@ -594,7 +633,52 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
public PageUtils auditPage(Map<String, Object> params) { public PageUtils auditPage(Map<String, Object> params) {
PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params));
CashOut cashOut = BeanUtil.toBean(params, CashOut.class); CashOut cashOut = BeanUtil.toBean(params, CashOut.class);
List<CashOut> page = baseMapper.selectCashOutPage(cashOut, false);
LambdaQueryWrapper<CashOut> queryWrapper = new LambdaQueryWrapper<>();
if (cashOut.getUserId() != null) {
queryWrapper.eq(CashOut::getUserId, cashOut.getUserId());
}
if (StrUtil.isNotBlank(cashOut.getUserName())) {
queryWrapper.like(CashOut::getUserName, cashOut.getUserName());
}
if (StrUtil.isNotBlank(cashOut.getZhifubaoName())) {
queryWrapper.like(CashOut::getZhifubaoName, cashOut.getZhifubaoName());
}
if (StrUtil.isNotBlank(cashOut.getZhifubao())) {
queryWrapper.like(CashOut::getZhifubao, cashOut.getZhifubao());
}
if (cashOut.getUserType() != null) {
queryWrapper.eq(CashOut::getUserType, cashOut.getUserType());
}
if (cashOut.getState() != null) {
queryWrapper.eq(CashOut::getState, cashOut.getState());
}
if (StrUtil.isNotBlank(cashOut.getStartTime()) && StrUtil.isNotBlank(cashOut.getEndTime())) {
queryWrapper.between(CashOut::getCreateAt, cashOut.getStartTime(), cashOut.getEndTime());
}else if (StrUtil.isNotBlank(cashOut.getStartTime())) {
queryWrapper.ge(CashOut::getCreateAt, cashOut.getStartTime());
}else if (StrUtil.isNotBlank(cashOut.getEndTime())) {
queryWrapper.le(CashOut::getCreateAt, cashOut.getEndTime());
}
queryWrapper.orderByDesc(CashOut::getCreateAt);
List<CashOut> page = list(queryWrapper);
if (!page.isEmpty()) {
Set<Long> userIdList = page.stream().map(CashOut::getUserId).collect(Collectors.toSet());
Map<Long, CashOut> countInfoMap = cashOutDao.countByUserIdList(userIdList).stream().collect(Collectors.toMap(CashOut::getUserId, item -> item));
page.forEach(item -> {
CashOut countInfo = countInfoMap.get(item.getUserId());
if (countInfo != null) {
item.setTotal(countInfo.getTotal());
item.setCount(countInfo.getCount());
item.setVerifyCount(countInfo.getVerifyCount());
item.setVerifyTotal(countInfo.getVerifyTotal());
}
});
}
PageInfo<CashOut> pageInfo = new PageInfo<>(page); PageInfo<CashOut> pageInfo = new PageInfo<>(page);
return PageUtils.page(pageInfo); return PageUtils.page(pageInfo);
} }
@@ -602,7 +686,6 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void audit(CashOut cashOut) { public void audit(CashOut cashOut) {
long id = cashOut.getId();
Integer isAgree = cashOut.getIsAgree(); Integer isAgree = cashOut.getIsAgree();
if (isAgree == null) { if (isAgree == null) {
throw new SqxException("请选择同意或者拒绝!"); throw new SqxException("请选择同意或者拒绝!");
@@ -610,7 +693,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
if (isAgree == 0 && StrUtil.isBlank(cashOut.getRefund())) { if (isAgree == 0 && StrUtil.isBlank(cashOut.getRefund())) {
throw new SqxException("请输入拒绝原因!"); throw new SqxException("请输入拒绝原因!");
} }
CashOut entity = baseMapper.selectById(id); CashOut entity = baseMapper.selectOne(new LambdaQueryWrapper<CashOut>().eq(CashOut::getUserId, cashOut.getUserId()).eq(CashOut::getId, cashOut.getId()));
if (entity == null) { if (entity == null) {
throw new SqxException("提现申请不存在!"); throw new SqxException("提现申请不存在!");
} }
@@ -624,18 +707,21 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
entity.setRefund(cashOut.getRefund()); entity.setRefund(cashOut.getRefund());
} }
boolean isSysUser = entity.getSysUserId() != null; boolean isUser = true;
if (entity.getUserType() == 2) {
isUser = false;
}
if (isSysUser) { if (isUser) {
SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId());
if (sysUserEntity == null) {
throw new SqxException("提现代理信息不存在!");
}
} else {
UserEntity userEntity = userService.selectUserById(entity.getUserId()); UserEntity userEntity = userService.selectUserById(entity.getUserId());
if (userEntity == null) { if (userEntity == null) {
throw new SqxException("提现用户信息不存在!"); throw new SqxException("提现用户信息不存在!");
} }
} else {
SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId());
if (sysUserEntity == null) {
throw new SqxException("提现代理信息不存在!");
}
} }
if (isAgree == 0) { if (isAgree == 0) {
@@ -643,13 +729,13 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
return; return;
} }
entity.setState(4); entity.setState(4);
baseMapper.updateById(entity); baseMapper.update(entity, new LambdaQueryWrapper<CashOut>().eq(CashOut::getUserId, entity.getUserId()).eq(CashOut::getId, entity.getId()));
if (StrUtil.isBlank(entity.getOrderNumber())) { if (StrUtil.isBlank(entity.getOrderNumber())) {
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
entity.setOrderNumber(outOrderNo); entity.setOrderNumber(outOrderNo);
} }
// 执行提现操作 // 执行提现操作
BaseResp baseResp = wuyouPay.extractOrderForAudit(entity.getOrderNumber(), entity.getMoney(), entity.getZhifubao(), entity.getZhifubaoName()); BaseResp baseResp = wuyouPay.extractOrderForAudit(entity.getOrderNumber(), entity.getUserId(), isUser, entity.getMoney(), entity.getZhifubao(), entity.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
entity.setState(1); entity.setState(1);
} else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) { } else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) {
@@ -665,11 +751,18 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
entity.setRefund("提现失败,请检查支付宝账号与收款人姓名后,重试。"); entity.setRefund("提现失败,请检查支付宝账号与收款人姓名后,重试。");
backCashAmount(entity); backCashAmount(entity);
} }
baseMapper.updateById(entity); updateByUserId(entity);
}
public void updateByUserId(CashOut entity) {
if (entity.getUserId() == null) {
throw new SqxException("cashOut修改失败: userId必须传递");
}
baseMapper.update(entity, new LambdaQueryWrapper<CashOut>().eq(CashOut::getUserId, entity.getUserId()).eq(CashOut::getId, entity.getId()));
} }
private void backCashAmount(CashOut entity) { private void backCashAmount(CashOut entity) {
baseMapper.updateById(entity); updateByUserId(entity);
UserMoneyDetails userMoneyDetails = new UserMoneyDetails( UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
entity.getUserId(), entity.getSysUserId(), null, "[提现退款]", 4, 1, 2, entity.getUserId(), entity.getSysUserId(), null, "[提现退款]", 4, 1, 2,
new BigDecimal(entity.getMoney()), "提现失败,自动退款" + entity.getMoney() + "", 1, entity.getId()); new BigDecimal(entity.getMoney()), "提现失败,自动退款" + entity.getMoney() + "", 1, entity.getId());

View File

@@ -41,7 +41,7 @@ public class WuyouPay {
this.commonInfoService = commonInfoService; this.commonInfoService = commonInfoService;
} }
public BaseResp payOrder(String orderNo, String amount, String userAgent, String allId, String payType) { public BaseResp payOrder(String orderNo, Long userId, String amount, String userAgent, String allId, String payType) {
String payConfig = commonInfoService.findOne(926).getValue(); String payConfig = commonInfoService.findOne(926).getValue();
if (!"1".equals(payConfig)) { if (!"1".equals(payConfig)) {
BaseResp baseResp = new BaseResp(); BaseResp baseResp = new BaseResp();
@@ -51,7 +51,7 @@ public class WuyouPay {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("type", "6001"); params.put("type", "6001");
params.put("is_code", "1"); params.put("is_code", "1");
params.put("out_trade_no", orderNo); params.put("out_trade_no", String.format("%s-%s", orderNo, userId));
params.put("total", amount); params.put("total", amount);
params.put("notify_url", notifyUrl); params.put("notify_url", notifyUrl);
@@ -68,9 +68,9 @@ public class WuyouPay {
return JSONObject.parseObject(body, BaseResp.class); return JSONObject.parseObject(body, BaseResp.class);
} }
public BaseResp queryOrder(String orderNo, String amount, String userAgent) { public BaseResp queryOrder(String orderNo, Long userId, String amount, String userAgent) {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", orderNo); params.put("out_trade_no", String.format("%s-%s", orderNo, userId));
params.put("total", amount); params.put("total", amount);
String sign = Encrypt.getParamsSign(params); String sign = Encrypt.getParamsSign(params);
@@ -116,7 +116,7 @@ public class WuyouPay {
* @param account 支付宝账号 * @param account 支付宝账号
* @param userName 支付宝名称 * @param userName 支付宝名称
*/ */
public BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) { public BaseResp extractOrder(String outOrderNo, Long userId, boolean isUser, String amount, String account, String userName) {
String payConfig = commonInfoService.findOne(927).getValue(); String payConfig = commonInfoService.findOne(927).getValue();
if (!"1".equals(payConfig)) { if (!"1".equals(payConfig)) {
BaseResp baseResp = new BaseResp(); BaseResp baseResp = new BaseResp();
@@ -125,7 +125,7 @@ public class WuyouPay {
} }
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", outOrderNo); params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl"));
params.put("total", amount); params.put("total", amount);
params.put("bank_card", account); params.put("bank_card", account);
params.put("bank_account_name", userName); params.put("bank_account_name", userName);
@@ -151,10 +151,10 @@ public class WuyouPay {
* @param account 支付宝账号 * @param account 支付宝账号
* @param userName 支付宝名称 * @param userName 支付宝名称
*/ */
public BaseResp extractOrderForAudit(String outOrderNo, String amount, String account, String userName) { public BaseResp extractOrderForAudit(String outOrderNo, Long userId, boolean isUser, String amount, String account, String userName) {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", outOrderNo); params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl"));
params.put("total", amount); params.put("total", amount);
params.put("bank_card", account); params.put("bank_card", account);
params.put("bank_account_name", userName); params.put("bank_account_name", userName);
@@ -174,9 +174,9 @@ public class WuyouPay {
return JSONObject.parseObject(body, BaseResp.class); return JSONObject.parseObject(body, BaseResp.class);
} }
public BaseResp queryExtractOrder(String outOrderNo, String amount) { public BaseResp queryExtractOrder(String outOrderNo, Long userId, boolean isUser, String amount) {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", outOrderNo); params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl"));
params.put("total", amount); params.put("total", amount);
String sign = Encrypt.getParamsSign(params); String sign = Encrypt.getParamsSign(params);

View File

@@ -72,8 +72,8 @@ public class SdkInfoServiceImpl extends ServiceImpl<SdkInfoDao, SdkInfo> impleme
limit = -1; limit = -1;
} }
PageHelper.startPage(page, limit); PageHelper.startPage(page, limit);
List<SdkInfo> sdkList = baseMapper.getSdkList(sdkInfo); // List<SdkInfo> sdkList = baseMapper.getSdkList(sdkInfo);
return PageUtils.page(new PageInfo<>(sdkList), true); return PageUtils.page(new PageInfo<>(new ArrayList<>()), true);
} }
@Override @Override

View File

@@ -0,0 +1,14 @@
package com.sqx.modules.sys.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.sys.entity.SysUserMoney;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface SysUserMoneyDao extends BaseMapper<SysUserMoney> {
void updateSysMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money);
}

View File

@@ -0,0 +1,41 @@
package com.sqx.modules.sys.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;
/**
* 系统用户钱包(SysUserMoney)表实体类
*
* @author ww
* @since 2025-01-06 13:37:36
*/
@Data
@TableName("sys_user_money")
@ApiModel(value = "系统用户钱包 实体类")
public class SysUserMoney extends Model<SysUserMoney> {
@ApiModelProperty("钱包id")
@TableId(type = IdType.ID_WORKER)
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@ApiModelProperty("钱包金额 钱")
private BigDecimal money;
@ApiModelProperty("渠道 系统用户userId")
@JsonSerialize(using = ToStringSerializer.class)
private Long userId;
private BigDecimal inviteIncomeMoney;
private BigDecimal inviteIncomeCoin;
}

View File

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -39,22 +41,26 @@ public class SysUserMoneyDetails implements Serializable {
/** /**
* 钱包详情id * 钱包详情id
*/ */
@TableId(type = IdType.AUTO) @TableId(type = IdType.ID_WORKER)
@JsonSerialize(using = ToStringSerializer.class)
private Long id; private Long id;
/** /**
* 用户id * 用户id
*/ */
@JsonSerialize(using = ToStringSerializer.class)
private Long userId; private Long userId;
/** /**
* 渠道用户id * 渠道用户id
*/ */
@JsonSerialize(using = ToStringSerializer.class)
private Long sysUserId; private Long sysUserId;
/** /**
* 对应用户id * 对应用户id
*/ */
@JsonSerialize(using = ToStringSerializer.class)
private Long byUserId; private Long byUserId;
/** /**
@@ -110,6 +116,7 @@ public class SysUserMoneyDetails implements Serializable {
/** /**
* 源id * 源id
*/ */
@JsonSerialize(using = ToStringSerializer.class)
private Long sourceId; private Long sourceId;
@TableField(exist = false) @TableField(exist = false)

View File

@@ -0,0 +1,17 @@
package com.sqx.modules.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.modules.app.entity.UserMoney;
import com.sqx.modules.sys.entity.SysUserMoney;
import java.util.Map;
public interface SysUserMoneyService extends IService<SysUserMoney> {
SysUserMoney selectSysUserMoneyByUserId(Long userId);
void updateSysMoney(int i, Long userId, double money);
}

View File

@@ -0,0 +1,37 @@
package com.sqx.modules.sys.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.modules.app.entity.UserMoney;
import com.sqx.modules.sys.dao.SysUserMoneyDao;
import com.sqx.modules.sys.entity.SysUserMoney;
import com.sqx.modules.sys.service.SysUserMoneyService;
import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.Map;
@Service
public class SysUserMoneyServiceImpl extends ServiceImpl<SysUserMoneyDao, SysUserMoney> implements SysUserMoneyService {
@Override
public void updateSysMoney(int i, Long userId, double money){
selectSysUserMoneyByUserId(userId);
baseMapper.updateSysMoney(i,userId,money);
}
@Override
public SysUserMoney selectSysUserMoneyByUserId(Long userId){
SysUserMoney userMoney = baseMapper.selectOne(new QueryWrapper<SysUserMoney>().eq("user_id", userId));
if(userMoney==null){
userMoney=new SysUserMoney();
userMoney.setUserId(userId);
userMoney.setMoney(new BigDecimal("0.00"));
baseMapper.insert(userMoney);
}
return userMoney;
}
}

View File

@@ -22,7 +22,7 @@ spring:
# sharding-jdbc 配置 # sharding-jdbc 配置
shardingsphere: shardingsphere:
# 显示sharding-jdbc改写的sql语句 # 显示sharding-jdbc改写的sql语句
show-sql: true show-sql: false
center-tables-data-node: duanju.%s center-tables-data-node: duanju.%s
# 区域表的数据源节点 # 区域表的数据源节点
@@ -99,66 +99,66 @@ spring:
max-lifetime: ${max-lifetime} max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} connection-timeout: ${connection-timeout}
duanju-slave: # duanju-slave:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
duanju-slave-0: # duanju-slave-0:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
duanju-slave-1: # duanju-slave-1:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
duanju-slave-2: # duanju-slave-2:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
duanju-slave-3: # duanju-slave-3:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
duanju-slave-4: # duanju-slave-4:
driver-class-name: ${driver-class-name} # driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT # jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root # username: root
password: VideoUser1@ # password: VideoUser1@
minimum-idle: ${minimum-idle} # minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size} # maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout} # idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime} # max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout} # connection-timeout: ${connection-timeout}
# 数据源配置end # 数据源配置end
# 读写分离配置begin # 读写分离配置begin
@@ -167,30 +167,30 @@ spring:
duanju: duanju:
masterDataSourceName: duanju masterDataSourceName: duanju
slaveDataSourceNames: slaveDataSourceNames:
# - duanju - duanju
- duanju-slave # - duanju-slave
duanju-0: duanju-0:
masterDataSourceName: duanju-0 masterDataSourceName: duanju-0
slaveDataSourceNames: slaveDataSourceNames:
# - duanju-0 - duanju-0
- duanju-slave-0 # - duanju-slave-0
duanju-1: duanju-1:
masterDataSourceName: duanju-1 masterDataSourceName: duanju-1
slaveDataSourceNames: slaveDataSourceNames:
# - duanju-1 - duanju-1
- duanju-slave-1 # - duanju-slave-1
duanju-2: duanju-2:
masterDataSourceName: duanju-2 masterDataSourceName: duanju-2
slaveDataSourceNames: slaveDataSourceNames:
# - duanju-2 - duanju-2
- duanju-slave-2 # - duanju-slave-2
duanju-3: duanju-3:
masterDataSourceName: duanju-3 masterDataSourceName: duanju-3
slaveDataSourceNames: slaveDataSourceNames:
# - duanju-3 - duanju-3
- duanju-slave-3 # - duanju-slave-3
duanju-4: duanju-4:
masterDataSourceName: duanju-4 masterDataSourceName: duanju-4
slaveDataSourceNames: slaveDataSourceNames:
# - duanju-4 - duanju-4
- duanju-slave-4 # - duanju-slave-4

View File

@@ -22,7 +22,7 @@ spring:
# sharding-jdbc 配置 # sharding-jdbc 配置
shardingsphere: shardingsphere:
# 显示sharding-jdbc改写的sql语句 # 显示sharding-jdbc改写的sql语句
show-sql: true show-sql: false
center-tables-data-node: duanju.%s center-tables-data-node: duanju.%s
# 区域表的数据源节点 # 区域表的数据源节点

View File

@@ -1,10 +1,3 @@
#logging:
# file:
# name: logs/duanju.log
# 日志配置
logging:
config: classpath:logback.xml
# Tomcat # Tomcat
server: server:
tomcat: tomcat:
@@ -17,45 +10,6 @@ server:
servlet: servlet:
context-path: /czg context-path: /czg
management:
health:
db:
enabled: false #关闭数据库健康检查isV
#mybatis
pagehelper:
offsetAsPageNum: true
rowBoundsWithCount: true
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params:
count: countSql
sqx:
redis:
open: false
shiro:
redis: false
# APP模块是通过jwt认证的如果要使用APP模块则需要修改【加密秘钥】
jwt:
# 加密秘钥
secret: f4e2e52034348f86b67cde581c0f9eb5
# token有效时长7天单位秒
expire: 604800
header: token
uni:
adSecret: 122e4ff1edc66dcf8761f7f7ffc81e0f8773cbfafb58aed29c72fbd092c77315
limit:
urlRate: 10 # 同一用户单url每秒限制次数
ipJumpLimit: 4 # 同一ip每分钟跳动次数
# 指定sharding-jdbc雪花算法的工作机器ID
snowflake:
datacenterId: 1
machineId: 3
spring: spring:
main: main:
allow-circular-references: true allow-circular-references: true
@@ -116,6 +70,7 @@ spring:
- sys_user - sys_user
#中心表 #中心表
center-tables: center-tables:
- sys_user_money
- course - course
- message_info - message_info
- announcement - announcement
@@ -172,3 +127,46 @@ spring:
- qrtz_cron_triggers - qrtz_cron_triggers
- qrtz_calendars - qrtz_calendars
- qrtz_blob_triggers - qrtz_blob_triggers
# 日志配置
logging:
config: classpath:logback.xml
limit:
urlRate: 10 # 同一用户单url每秒限制次数
ipJumpLimit: 4 # 同一ip每分钟跳动次数
# 指定sharding-jdbc雪花算法的工作机器ID
snowflake:
datacenterId: 1
machineId: 3
management:
health:
db:
enabled: false #关闭数据库健康检查isV
#mybatis
pagehelper:
offsetAsPageNum: true
rowBoundsWithCount: true
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params:
count: countSql
sqx:
redis:
open: false
shiro:
redis: false
# APP模块是通过jwt认证的如果要使用APP模块则需要修改【加密秘钥】
jwt:
# 加密秘钥
secret: f4e2e52034348f86b67cde581c0f9eb5
# token有效时长7天单位秒
expire: 604800
header: token
uni:
adSecret: 122e4ff1edc66dcf8761f7f7ffc81e0f8773cbfafb58aed29c72fbd092c77315

View File

@@ -18,7 +18,7 @@
<file>logs/duanju.log</file> <file>logs/duanju.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--生成日志文件名称--> <!--生成日志文件名称-->
<fileNamePattern>logs/duanju.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <fileNamePattern>logs/%d{yyyy-MM-dd}/duanju.%i.log.gz</fileNamePattern>
<!--日志文件保留天数--> <!--日志文件保留天数-->
<MaxHistory>30</MaxHistory> <MaxHistory>30</MaxHistory>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>

View File

@@ -15,7 +15,6 @@
, c.title_img as titleImg , c.title_img as titleImg
, c.good_num as goodNum , c.good_num as goodNum
, c.sort as sort , c.sort as sort
, IF(#{collect} = 1, 1, 0) AS isCollect
from course_details c from course_details c
where c.course_id = #{courseId} where c.course_id = #{courseId}
order by c.sort asc order by c.sort asc

View File

@@ -205,7 +205,8 @@
</select> </select>
<select id="selectOrdersMoney" resultType="Double"> <select id="selectOrdersMoney" resultType="Double">
select ifnull(sum(pay_money),0.00) from orders where 1=1 select sum(pay_money) from orders
where 1=1
<if test="sysUserId!=null"> <if test="sysUserId!=null">
and sys_user_id=#{sysUserId} and sys_user_id=#{sysUserId}
</if> </if>
@@ -232,16 +233,13 @@
<select id="selectFenXiaoMoney" resultType="Double"> <select id="selectFenXiaoMoney" resultType="Double">
select select
<if test="type==1"> <if test="type==1">
ifnull(sum(one_money),0.00) sum(ifnull(one_money,0.00))
</if> </if>
<if test="type==2"> <if test="type==2">
ifnull(sum(two_money),0.00) sum(ifnull(two_money,0.00))
</if> </if>
<if test="type==3"> <if test="type==3">
ifnull(sum(qd_money),0.00) sum(ifnull(qd_money,0.00))
</if>
<if test="type==4">
ifnull(sum(one_money),0.00)+ifnull(sum(two_money),0.00)+ifnull(sum(qd_money),0.00)
</if> </if>
from orders from orders
where status=1 where status=1

View File

@@ -61,10 +61,24 @@
GROUP BY GROUP BY
user_id user_id
</select> </select>
<select id="countByUserIdList" resultType="com.sqx.modules.pay.entity.CashOut">
SELECT user_id as userId,
ROUND(SUM(CASE WHEN state = 1 THEN money ELSE 0 END), 2) AS total,
COUNT(CASE WHEN state = 1 THEN 1 END) AS count,
ROUND(SUM(CASE WHEN state = 3 THEN money ELSE 0 END), 2) AS verifyTotal,
COUNT(CASE WHEN state = 3 THEN 1 END) AS verifyCount
FROM cash_out
GROUP BY user_id;
</select>
<select id="selectCashOutPage" resultType="com.sqx.modules.pay.entity.CashOut"> <select id="selectCashOutPage" resultType="com.sqx.modules.pay.entity.CashOut">
SELECT c.*, SELECT c.*,
ifnull(u.user_name,"用户不存在") as userName, ifnull(u.user_name,"用户不存在") as userName
s.username as sysUserName # s.username as sysUserName
<if test="isApp == false"> <if test="isApp == false">
,ifnull(t.total,0.00) as total, ,ifnull(t.total,0.00) as total,
ifnull(t.count,0) as count, ifnull(t.count,0) as count,
@@ -73,7 +87,7 @@
</if> </if>
FROM cash_out c FROM cash_out c
left join tb_user u on c.user_id = u.user_id left join tb_user u on c.user_id = u.user_id
left join sys_user s on s.user_id= c.sys_user_id # left join sys_user s on s.user_id= c.sys_user_id
<if test="isApp == false"> <if test="isApp == false">
left join (select user_id,ROUND(sum(money),2) as total,count(*) as count from cash_out where state = 1 GROUP BY user_id) t on c.user_id = t.user_id left join (select user_id,ROUND(sum(money),2) as total,count(*) as count from cash_out where state = 1 GROUP BY user_id) t on c.user_id = t.user_id
left join (select user_id,ROUND(sum(money),2) as total,count(*) as count from cash_out where state = 3 GROUP BY user_id) t1 on c.user_id = t1.user_id left join (select user_id,ROUND(sum(money),2) as total,count(*) as count from cash_out where state = 3 GROUP BY user_id) t1 on c.user_id = t1.user_id
@@ -91,9 +105,9 @@
<if test="cashOut.sysUserId!=null"> <if test="cashOut.sysUserId!=null">
and c.sys_user_id = #{cashOut.sysUserId} and c.sys_user_id = #{cashOut.sysUserId}
</if> </if>
<if test="cashOut.sysUserName!=null and cashOut.sysUserName!=''"> <!-- <if test="cashOut.sysUserName!=null and cashOut.sysUserName!=''">-->
and s.username = #{cashOut.sysUserName} <!-- and s.username = #{cashOut.sysUserName}-->
</if> <!-- </if>-->
<if test="cashOut.userType!=null"> <if test="cashOut.userType!=null">
and c.user_type = #{cashOut.userType} and c.user_type = #{cashOut.userType}
</if> </if>

View File

@@ -0,0 +1,15 @@
<?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.sqx.modules.sys.dao.SysUserMoneyDao">
<update id="updateSysMoney">
update sys_user_money set
<if test="type==1">
money=money+#{money}
</if>
<if test="type==2">
money=money-#{money}
</if>
where user_id=#{userId}
</update>
</mapper>