diff --git a/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java b/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java index 48115bc1..4662535f 100644 --- a/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java +++ b/src/main/java/com/sqx/common/aspect/AppApiMethodAspect.java @@ -10,16 +10,21 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; 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 javax.servlet.http.HttpServletRequest; + + /** * 方法调用统一切面处理 */ @Aspect @Component @Slf4j +@Profile({"dev"}) public class AppApiMethodAspect { @Pointcut("!execution(public * (com.sqx.modules.sys.controller.SysLoginController).*(..)) " + diff --git a/src/main/java/com/sqx/modules/app/controller/UserController.java b/src/main/java/com/sqx/modules/app/controller/UserController.java index b1def84d..fd670778 100644 --- a/src/main/java/com/sqx/modules/app/controller/UserController.java +++ b/src/main/java/com/sqx/modules/app/controller/UserController.java @@ -292,6 +292,7 @@ public class UserController { int dyCount = userService.queryUserCount(type, date, "抖音", qdCode); int giveMemberCount = userService.userMessage(date, type, qdCode, 1); 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 userCount = sumUserCount - memberCount; Map result = new HashMap<>(); @@ -359,24 +360,24 @@ public class UserController { @PostMapping("/updateSysUserMoney") @ApiOperation("修改金币") public Result updateSysUserMoney(Long userId, Double money, Integer type) { - userMoneyService.updateSysMoney(type, userId, money); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - userMoneyDetails.setSysUserId(userId); - if (type == 1) { - userMoneyDetails.setTitle("[增加金币]平台增加金币:" + money); - userMoneyDetails.setContent("[增加金币]平台增加金币:" + money); - } else { - userMoneyDetails.setTitle("[减少金币]平台减少金币:" + money); - userMoneyDetails.setContent("[减少金币]平台减少金币:" + money); - } - userMoneyDetails.setMoneyType(2); - userMoneyDetails.setType(type); - // ✅ - userMoneyDetails.setClassify(8); - userMoneyDetails.setMoney(new BigDecimal(money)); - userMoneyDetails.setCreateTime(sdf.format(new Date())); - userMoneyDetailsService.save(userMoneyDetails); +// userMoneyService.updateSysMoney(type, userId, money); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); +// userMoneyDetails.setSysUserId(userId); +// if (type == 1) { +// userMoneyDetails.setTitle("[增加金币]平台增加金币:" + money); +// userMoneyDetails.setContent("[增加金币]平台增加金币:" + money); +// } else { +// userMoneyDetails.setTitle("[减少金币]平台减少金币:" + money); +// userMoneyDetails.setContent("[减少金币]平台减少金币:" + money); +// } +// userMoneyDetails.setMoneyType(2); +// userMoneyDetails.setType(type); +// // ✅ +// userMoneyDetails.setClassify(8); +// userMoneyDetails.setMoney(new BigDecimal(money)); +// userMoneyDetails.setCreateTime(sdf.format(new Date())); +// userMoneyDetailsService.save(userMoneyDetails); return Result.success(); } diff --git a/src/main/java/com/sqx/modules/app/controller/UserMoneyDetailsController.java b/src/main/java/com/sqx/modules/app/controller/UserMoneyDetailsController.java index f703d152..4b13694e 100644 --- a/src/main/java/com/sqx/modules/app/controller/UserMoneyDetailsController.java +++ b/src/main/java/com/sqx/modules/app/controller/UserMoneyDetailsController.java @@ -3,6 +3,7 @@ package com.sqx.modules.app.controller; import com.sqx.common.utils.Result; import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyService; +import com.sqx.modules.sys.service.SysUserMoneyService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; public class UserMoneyDetailsController { private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyService userMoneyService; + private SysUserMoneyService sysUserMoneyService; @ApiOperation("钱包明细") @@ -34,7 +36,7 @@ public class UserMoneyDetailsController { @GetMapping("/selectSysUserMoney") @ApiOperation("代理钱包") public Result selectSysUserMoney(Long userId){ - return Result.success().put("data",userMoneyService.selectSysUserMoneyByUserId(userId)); + return Result.success().put("data",sysUserMoneyService.selectSysUserMoneyByUserId(userId)); } diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppController.java b/src/main/java/com/sqx/modules/app/controller/app/AppController.java index b278e510..b32d7e2c 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppController.java @@ -113,15 +113,15 @@ public class AppController { if (count > 0) { errMsg = "支付宝信息修改失败: 一个支付宝账号仅可绑定一个用户"; } - if (StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { + if (errMsg == null && StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { 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 = "支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完"; } - 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 = "支付宝信息修改失败: 每月可修改次数已用完,请联系管理员"; } @@ -133,42 +133,48 @@ public class AppController { } + String authErrMsg = null; if (StrUtil.isNotBlank(certNum) && !certNum.equals(userInfo.getCertNo())) { if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) { - errMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; + authErrMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; } - if (!IdcardUtil.isValidCard(certNum)) { - errMsg = "实名修改失败: 身份证号码有误"; + if (authErrMsg == null && !IdcardUtil.isValidCard(certNum)) { + authErrMsg = "实名修改失败: 身份证号码有误"; } - Integer idCount = userInfoService.countCertCount(certName, certNum); - if (idCount > 1) { - errMsg = "实名修改失败: 此实名信息已存在"; + if (authErrMsg == null) { + Integer idCount = userInfoService.countCertCount(certName, certNum); + if (idCount > 1) { + authErrMsg = "实名修改失败: 此实名信息已存在"; + } } - if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { - errMsg = "实名修改失败: 每月可修改次数已用完,请联系管理员"; + if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { + authErrMsg = "实名修改失败: 账号每月可修改次数已用完,请联系管理员"; } - try { - aliService.authCertNo(certName, certNum); - }catch (Exception e) { - ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo"); - errMsg = "实名修改失败: 身份证信息不匹配"; + if (authErrMsg == null && !ApiAccessLimitUtil.isAccessAllowed(certName, "updateAuthCertInfoByIdCard", 1, "month")) { + authErrMsg = "实名修改失败: 此身份证信息次月已绑定过,请联系管理员"; } - if (errMsg != null && errMsg.contains("实名修改失败")) { - return Result.error(errMsg); + if (authErrMsg == null) { + try { + aliService.authCertNo(certName, certNum); + userInfo.setCertName(certName); + userInfo.setCertNo(certNum); + userInfo.setUpdateTime(DateUtil.date()); + userInfoService.update(userInfo, new LambdaQueryWrapper().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().eq(UserInfo::getUserId, userId)); } - if (errMsg != null) { - return Result.error(errMsg); + if (errMsg != null || authErrMsg != null) { + authErrMsg = authErrMsg == null ? "" : authErrMsg; + return Result.error(errMsg == null ? authErrMsg : errMsg + " " + authErrMsg); } return Result.success(); // 去除首绑支付宝奖励 @@ -232,6 +238,9 @@ public class AppController { UserInfo userInfo = userInfoService.getByUserId(user.getUserId()); Map map = BeanUtil.beanToMap(user); 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); } diff --git a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java index 601a3b10..7d9950c5 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java @@ -14,10 +14,6 @@ public interface UserMoneyDao extends BaseMapper { 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 '获取金币')") BigDecimal sumMoney(Long userId); diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java index a9e7c914..575592ec 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java @@ -7,13 +7,7 @@ public interface UserMoneyService extends IService { UserMoney selectUserMoneyByUserId(Long userId); - UserMoney selectSysUserMoneyByUserId(Long userId); - void updateMoney(int i, Long userId, double money); void updateAmount(int i, Long userId, double amount); - - void updateSysMoney(int i, Long userId, double money); - - void updateSysAmount(int i, Long userId, double amount); } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java index 3b7d59ed..e19d3423 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java @@ -24,18 +24,6 @@ public class UserMoneyServiceImpl extends ServiceImpl i 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 public UserMoney selectUserMoneyByUserId(Long userId){ UserMoney userMoney = baseMapper.selectOne(new QueryWrapper().eq("user_id", userId)); @@ -48,19 +36,4 @@ public class UserMoneyServiceImpl extends ServiceImpl i } return userMoney; } - - @Override - public UserMoney selectSysUserMoneyByUserId(Long userId){ - UserMoney userMoney = baseMapper.selectOne(new QueryWrapper().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; - } - - } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index 332bd8ae..7bff4a41 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -44,6 +44,7 @@ import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.dao.MsgDao; 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.service.*; import com.sqx.modules.app.utils.JwtUtils; @@ -82,11 +83,9 @@ import weixin.popular.util.JsonUtil; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.stream.Collectors; /** * 用户 @@ -124,15 +123,17 @@ public class UserServiceImpl extends ServiceImpl implements private SysUserService sysUserService; private final AliService aliService; private final UserInfoService userInfoService; + private final UserVipDao userVipDao; @Value("${spring.profiles.active}") private String profiles; 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.userInfoService = userInfoService; + this.userVipDao = userVipDao; } @Override @@ -1419,7 +1420,34 @@ public class UserServiceImpl extends ServiceImpl implements @Override 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 queryWrapper = new LambdaQueryWrapper() + .ge(UserEntity::getCreateTime, dateTime); + if (StrUtil.isNotBlank(qdCode)) { + queryWrapper.eq(UserEntity::getQdCode, qdCode); + } + + Set useridList = baseMapper.selectList(queryWrapper.select(UserEntity::getUserId)) + .stream().map(UserEntity::getUserId).collect(Collectors.toSet()); + if (useridList.isEmpty()) { + return 0; + } + + LambdaQueryWrapper vipLambdaQueryWrapper = new LambdaQueryWrapper().in(UserVip::getUserId, useridList) + .eq(UserVip::getIsVip, 2); + if (vipType != null) { + vipLambdaQueryWrapper.eq(UserVip::getVipType, vipType); + } + return userVipDao.selectCount(vipLambdaQueryWrapper); } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java index 4a7774ff..ff89c12b 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java @@ -22,8 +22,8 @@ public interface CourseDetailsDao extends BaseMapper { * @param price 全剧价格 * @param wholesalePrice 10集价格 */ - @Cacheable(cacheNames = "courseSets" ,key = "#courseId") - List courseSets(@Param("courseId") Long courseId, @Param("collect") Long collect, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); + @Cacheable(cacheNames = "courseSets", key = "#courseId") + List courseSets(@Param("courseId") Long courseId, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); List findByCourseId(@Param("id") Long id, @Param("userId") Long userId); @@ -41,7 +41,7 @@ public interface CourseDetailsDao extends BaseMapper { */ Map countCourse(Long courseId); - @Cacheable(cacheNames = "courseCount" ,key = "#courseId") + @Cacheable(cacheNames = "courseCount", key = "#courseId") Integer countCourseByCourseId(Long courseId); List countByCourseId(); diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index f5c89b7d..cc386cc3 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -34,7 +34,6 @@ import com.sqx.modules.course.entity.CourseUser; import com.sqx.modules.course.service.CourseDetailsService; import com.sqx.modules.course.vo.CourseDetailsIn; 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.service.OrdersService; import com.sqx.modules.redisService.impl.RedisServiceImpl; @@ -53,7 +52,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; @Service @Slf4j @@ -146,7 +145,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl courseDetailsSetVos; if (freeWatch || courseUser != null) { - courseDetailsSetVos = baseMapper.courseSets(courseId, collect == null ? 0L : 1L, 2, null, null); + courseDetailsSetVos = baseMapper.courseSets(courseId,2, null, null); } 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) { startSort = sort - 3; @@ -196,6 +195,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl current = new AtomicReference<>(new CourseDetailsSetVo()); Set finalDetailsId = detailsId; int finalStartSort = startSort; int finalEndSort = endSort; @@ -203,6 +203,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { @@ -216,12 +217,15 @@ public class CourseDetailsServiceImpl extends ServiceImpl { setCourseView(bean); }); Map map = new HashMap<>(); + map.put("current", current.get()); map.put("title", bean.getTitle()); + map.put("collect", collect == null ? 0L : 1L); map.put("list", courseDetailsSetVos); return new Result().put("data", map); } diff --git a/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java index 42f2bcbb..133b8448 100644 --- a/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java +++ b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java @@ -1,12 +1,16 @@ 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 java.math.BigDecimal; @Data public class CourseDetailsSetVo { + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; + @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; private String courseDetailsName; private Integer current = 0; diff --git a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java index 7b96f023..9a776de2 100644 --- a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java +++ b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java @@ -127,6 +127,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl implements @Autowired private UserMoneyService userMoneyService; @Autowired + private SysUserMoneyService sysUserMoneyService; + @Autowired private UserMoneyDetailsService userMoneyDetailsService; @Autowired private InviteAwardService inviteAwardService; @@ -204,7 +207,7 @@ public class InviteServiceImpl extends ServiceImpl implements // 金币 int money = Integer.parseInt(commonInfoService.findOne(911).getValue()); if (money > 0 && userEntity.getUserId() != 1) { - userMoneyService.updateMoney(1, userEntity.getUserId(), money); +// userMoneyService.updateMoney(1, userEntity.getUserId(), money); UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setUserId(userEntity.getUserId()); userMoneyDetails.setType(1); @@ -220,8 +223,9 @@ public class InviteServiceImpl extends ServiceImpl implements // 更新邀请人钱包 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))); - userMoneyService.update(userMoney, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); + userMoneyService.update(null, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); } //助力活动 @@ -365,7 +369,7 @@ public class InviteServiceImpl extends ServiceImpl implements if (sumMoney.compareTo(BigDecimal.ZERO) <= 0) { return result; } - userMoneyService.updateSysAmount(1, sysUserEntity.getUserId(), sumMoney.doubleValue()); + sysUserMoneyService.updateSysMoney(1, sysUserEntity.getUserId(), sumMoney.doubleValue()); SysUserMoneyDetails userMoneyDetails = new SysUserMoneyDetails(); userMoneyDetails.setSysUserId(sysUserEntity.getUserId()); userMoneyDetails.setUserId(sysUserEntity.getUserId()); diff --git a/src/main/java/com/sqx/modules/job/task/CashOutTask.java b/src/main/java/com/sqx/modules/job/task/CashOutTask.java index e907b737..d7759034 100644 --- a/src/main/java/com/sqx/modules/job/task/CashOutTask.java +++ b/src/main/java/com/sqx/modules/job/task/CashOutTask.java @@ -41,7 +41,8 @@ public class CashOutTask{ String outOrderNo = AliPayOrderUtil.createOrderId(); 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)) { cashOut.setState(1); } else { diff --git a/src/main/java/com/sqx/modules/job/task/CashOutTask2.java b/src/main/java/com/sqx/modules/job/task/CashOutTask2.java index a8fa0a5f..1670efbf 100644 --- a/src/main/java/com/sqx/modules/job/task/CashOutTask2.java +++ b/src/main/java/com/sqx/modules/job/task/CashOutTask2.java @@ -53,7 +53,8 @@ public class CashOutTask2{ cashOut.setState(4); String outOrderNo = AliPayOrderUtil.createOrderId(); 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)) { cashOut.setState(1); } else { diff --git a/src/main/java/com/sqx/modules/job/task/TempCashOutTask.java b/src/main/java/com/sqx/modules/job/task/TempCashOutTask.java index 73e6f2d8..4511bd70 100644 --- a/src/main/java/com/sqx/modules/job/task/TempCashOutTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempCashOutTask.java @@ -27,7 +27,7 @@ public class TempCashOutTask{ logger.info("提现开始"); List cashOuts = cashOutDao.selectTemp(); 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)); if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){ logger.info("success:{} ", cashOut.getOrderNumber()); diff --git a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java index 69f181cd..a39781e4 100644 --- a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java @@ -32,8 +32,10 @@ import com.sqx.modules.pay.entity.PayDetails; import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.WuyouPay; 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 org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -69,6 +71,8 @@ public class TempOrdersTask { @Resource private UserMoneyService userMoneyService; @Resource + private SysUserMoneyService sysUserMoneyService; + @Resource private SysUserService sysUserService; @Resource private InviteDao inviteDao; @@ -114,7 +118,7 @@ public class TempOrdersTask { Orders orders = ordersDao.selectOne(new LambdaQueryWrapper() .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)); if (baseResp.getCode() == null || baseResp.getCode() != 200) { logger.info("code错误跳过"); @@ -189,22 +193,6 @@ public class TempOrdersTask { ThreadUtil.execAsync(() -> { courseService.incrWeekPayCount(order.getCourseId()); }); - //Map 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 @@ -254,14 +242,14 @@ public class TempOrdersTask { sysUser.getUserId(), sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 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); - UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId()); - userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward))); - userMoneyService.update(userMoney, new LambdaQueryWrapper() - .eq(UserMoney::getSysUserId, userMoney.getSysUserId()) - .eq(UserMoney::getId, userMoney.getId())); + SysUserMoney sysUserMoney = sysUserMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId()); + sysUserMoney.setInviteIncomeMoney(sysUserMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward))); + sysUserMoneyService.update(sysUserMoney, new LambdaQueryWrapper() + .eq(SysUserMoney::getUserId, sysUserMoney.getUserId()) + .eq(SysUserMoney::getId, sysUserMoney.getId())); } } } diff --git a/src/main/java/com/sqx/modules/orders/controller/OrdersController.java b/src/main/java/com/sqx/modules/orders/controller/OrdersController.java index 0eb417f9..500056d6 100644 --- a/src/main/java/com/sqx/modules/orders/controller/OrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/OrdersController.java @@ -134,10 +134,10 @@ public class OrdersController extends AbstractController { //日 Double dayMoney = ordersService.selectOrdersMoney(1, 1, 1, dateTime, courseId, sysUserId); Map result = new HashMap<>(); - result.put("sumMoney", sumMoney); - result.put("yearMoney", yearMoney); - result.put("monthMoney", monthMoney); - result.put("dayMoney", dayMoney); + result.put("sumMoney", sumMoney == null ? 0 : sumMoney); + result.put("yearMoney", yearMoney == null ? 0 : yearMoney); + result.put("monthMoney", monthMoney == null ? 0 : monthMoney); + result.put("dayMoney", dayMoney == null ? 0 : dayMoney); return Result.success().put("data", result); } @@ -151,12 +151,12 @@ public class OrdersController extends AbstractController { //渠道 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 result = new HashMap<>(); result.put("oneMoney", oneMoney); result.put("twoMoney", twoMoney); result.put("qdMoney", qdMoney); - result.put("sumMoney", sumMoney); + result.put("sumMoney", oneMoney + twoMoney + qdMoney); return Result.success().put("data", result); } diff --git a/src/main/java/com/sqx/modules/pay/controller/CashController.java b/src/main/java/com/sqx/modules/pay/controller/CashController.java index 988a1c79..31cd5e0f 100644 --- a/src/main/java/com/sqx/modules/pay/controller/CashController.java +++ b/src/main/java/com/sqx/modules/pay/controller/CashController.java @@ -31,6 +31,9 @@ import com.sqx.modules.pay.entity.AliPayWithdrawModel; import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.service.CashOutService; 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.excel.ExcelData; import com.sqx.modules.utils.excel.ExportExcelUtils; @@ -86,6 +89,8 @@ public class CashController { @Autowired private UserMoneyDetailsService userMoneyDetailsService; @Autowired + private SysUserMoneyDetailsService sysUserMoneyDetailsService; + @Autowired private MessageService messageService; @Autowired private InviteMoneyDao inviteMoneyDao; @@ -93,6 +98,8 @@ public class CashController { private OrdersService ordersService; @Autowired private UserMoneyService userMoneyService; + @Autowired + private SysUserMoneyService sysUserMoneyService; private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); @RequestMapping(value = "/sendMsgByUserId", method = RequestMethod.GET) @@ -460,18 +467,19 @@ public class CashController { } //将金币退还 if (one.getSysUserId() != null) { - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - userMoneyDetails.setSysUserId(one.getSysUserId()); - userMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v); - userMoneyDetails.setContent(content); - userMoneyDetails.setType(1); + SysUserMoneyDetails sysUserMoneyDetails = new SysUserMoneyDetails(); + sysUserMoneyDetails.setSysUserId(one.getSysUserId()); + sysUserMoneyDetails.setUserId(one.getSysUserId()); + sysUserMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v); + sysUserMoneyDetails.setContent(content); + sysUserMoneyDetails.setType(1); // ✅ - userMoneyDetails.setClassify(4); - userMoneyDetails.setMoney(new BigDecimal(v)); - userMoneyDetails.setCreateTime(sdf.format(now)); - userMoneyDetails.setMoneyType(2); - userMoneyDetailsService.save(userMoneyDetails); - userMoneyService.updateSysMoney(1, userId, v); + sysUserMoneyDetails.setClassify(4); + sysUserMoneyDetails.setMoney(new BigDecimal(v)); + sysUserMoneyDetails.setCreateTime(sdf.format(now)); + sysUserMoneyDetails.setMoneyType(2); + sysUserMoneyDetailsService.save(sysUserMoneyDetails); + sysUserMoneyService.updateSysMoney(1, userId, v); } else { UserEntity userInfo = userService.queryByUserId(userId); UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); diff --git a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java index 24853388..5c0b0c41 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java @@ -124,7 +124,7 @@ public class WuyouController { 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()), payType); if (baseResp.getCode() == null) { @@ -154,7 +154,7 @@ public class WuyouController { 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) { return Result.success().put("data", 0); } @@ -205,10 +205,24 @@ public class WuyouController { 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); String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss"); - List details = payDetailsDao.selectList(new LambdaQueryWrapper() - .eq(PayDetails::getTradeNo, notifyDto.getOut_trade_no()).ge(PayDetails::getCreateTime, format)); + LambdaQueryWrapper detailsLambdaQueryWrapper = new LambdaQueryWrapper() + .eq(PayDetails::getTradeNo, orderNo).ge(PayDetails::getCreateTime, format); + if (userId != 0) { + detailsLambdaQueryWrapper.eq(PayDetails::getUserId, userId); + } + List details = payDetailsDao.selectList(detailsLambdaQueryWrapper); if (details.isEmpty()) { log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto)); return "success"; @@ -265,7 +279,29 @@ public class WuyouController { log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign); // return "签名错误"; } - CashOut cashOut = cashOutDao.selectOne(new QueryWrapper().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 orderNumber = new QueryWrapper().eq("order_number", orderNo); + if (userId != 0) { + orderNumber.eq("user_id", userId); + } + + CashOut cashOut = cashOutDao.selectOne(orderNumber); if (cashOut != null) { if ("2".equals(notifyDto.getStatus())) { cashOut.setState(1); diff --git a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java index cb46b76e..db7df678 100644 --- a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java +++ b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java @@ -9,6 +9,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Set; /** * @author fang @@ -46,4 +47,6 @@ public interface CashOutDao extends BaseMapper { BigDecimal selectSumMoney(@Param("userId") Long userId, @Param("state") Integer state); List selectSumByUserIdList(ArrayList userIdList, Integer state); + + List countByUserIdList(Set userIdList); } diff --git a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java index e123e71a..b1e93966 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java @@ -36,6 +36,10 @@ import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.WuyouPay; 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.utils.AliPayOrderUtil; import com.sqx.modules.utils.AmountCalUtils; @@ -87,8 +91,12 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Autowired private UserMoneyService userMoneyService; @Autowired + private SysUserMoneyService sysUserMoneyService; + @Autowired private UserMoneyDetailsService userMoneyDetailsService; @Autowired + private SysUserMoneyDetailsService sysUserMoneyDetailsService; + @Autowired private InviteMoneyService inviteMoneyService; @Autowired private SysUserService sysUserService; @@ -118,7 +126,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme } PageHelper.startPage(page, limit); - List cashOutList = list(queryWrapper); + List cashOutList = list(queryWrapper.eq(CashOut::getUserType, 1).orderByDesc(CashOut::getCreateAt)); if (!isApp) { ArrayList userIdList = new ArrayList<>(); @@ -414,64 +422,65 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override @Transactional public Result sysCashMoney(Long userId, Double money) { - if (money == null || money <= 0.00) { - return Result.error("请不要输入小于0的数字,请输入正确的提现金币!"); - } - //最低提现金币 - CommonInfo one = commonInfoService.findOne(112); - if (one != null && money < Double.parseDouble(one.getValue())) { - return Result.error("输入金币不满足最低提现金币,请重新输入!"); - } - //最高提现金币 - CommonInfo one2 = commonInfoService.findOne(153); - if (one2 != null && money >= Double.parseDouble(one2.getValue())) { - return Result.error(-100, "输入金币过大,不能大于" + one2.getValue() + ",请重新输入!"); - } - //手续费 - CommonInfo one1 = commonInfoService.findOne(152); - double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); - if (mul < 0.01) { - mul = 0.01; - } - UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); - - SysUserEntity sysUserEntity = sysUserService.getById(userId); - //提现判断金币是否足够 金币=提现金币+手续费 - double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); - // 用户金币足够 - if (userMoney.getMoney().doubleValue() >= moneySum) { - //扣除可提现金币 - userMoneyService.updateSysMoney(2, userId, moneySum); - //增加金币操作记录 - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); - userMoneyDetails.setSysUserId(userId); - userMoneyDetails.setTitle("提现:" + money); - userMoneyDetails.setContent("提现:" + money + ",手续费:" + mul + ",总计:" + moneySum); - userMoneyDetails.setType(2); - // ✅ - userMoneyDetails.setClassify(4); - userMoneyDetails.setMoney(new BigDecimal(moneySum)); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - userMoneyDetails.setCreateTime(sdf.format(new Date())); - userMoneyDetails.setMoneyType(1); - userMoneyDetailsService.save(userMoneyDetails); - CashOut cashOut = new CashOut(); - cashOut.setState(0); - cashOut.setZhifubao(sysUserEntity.getZhiFuBao()); - cashOut.setZhifubaoName(sysUserEntity.getZhiFuBaoName()); - cashOut.setMoney(money.toString()); - cashOut.setCreateAt(sdf.format(new Date())); - cashOut.setUserId(sysUserEntity.getUserId()); - cashOut.setRate(mul); - cashOut.setOrderNumber(String.valueOf(System.currentTimeMillis())); - cashOut.setSysUserId(userId); - cashOut.setUserType(2); - baseMapper.insert(cashOut); -// inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId); - return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); - } else { - return Result.error("金币不足,请输入正确的提现金币!"); - } +// if (money == null || money <= 0.00) { +// return Result.error("请不要输入小于0的数字,请输入正确的提现金币!"); +// } +// //最低提现金币 +// CommonInfo one = commonInfoService.findOne(112); +// if (one != null && money < Double.parseDouble(one.getValue())) { +// return Result.error("输入金币不满足最低提现金币,请重新输入!"); +// } +// //最高提现金币 +// CommonInfo one2 = commonInfoService.findOne(153); +// if (one2 != null && money >= Double.parseDouble(one2.getValue())) { +// return Result.error(-100, "输入金币过大,不能大于" + one2.getValue() + ",请重新输入!"); +// } +// //手续费 +// CommonInfo one1 = commonInfoService.findOne(152); +// double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); +// if (mul < 0.01) { +// mul = 0.01; +// } +// SysUserMoney sysUserMoney = sysUserMoneyService.selectSysUserMoneyByUserId(userId); +// +// SysUserEntity sysUserEntity = sysUserService.getById(userId); +// //提现判断金币是否足够 金币=提现金币+手续费 +// double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); +// // 用户金币足够 +// if (sysUserMoney.getMoney().doubleValue() >= moneySum) { +// //扣除可提现金币 +// sysUserMoneyService.updateSysMoney(2, userId, moneySum); +// //增加金币操作记录 +// UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); +// userMoneyDetails.setSysUserId(userId); +// userMoneyDetails.setTitle("提现:" + money); +// userMoneyDetails.setContent("提现:" + money + ",手续费:" + mul + ",总计:" + moneySum); +// userMoneyDetails.setType(2); +// // ✅ +// userMoneyDetails.setClassify(4); +// userMoneyDetails.setMoney(new BigDecimal(moneySum)); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// userMoneyDetails.setCreateTime(sdf.format(new Date())); +// userMoneyDetails.setMoneyType(1); +// userMoneyDetailsService.save(userMoneyDetails); +// CashOut cashOut = new CashOut(); +// cashOut.setState(0); +// cashOut.setZhifubao(sysUserEntity.getZhiFuBao()); +// cashOut.setZhifubaoName(sysUserEntity.getZhiFuBaoName()); +// cashOut.setMoney(money.toString()); +// cashOut.setCreateAt(sdf.format(new Date())); +// cashOut.setUserId(sysUserEntity.getUserId()); +// cashOut.setRate(mul); +// cashOut.setOrderNumber(String.valueOf(System.currentTimeMillis())); +// cashOut.setSysUserId(userId); +// cashOut.setUserType(2); +// baseMapper.insert(cashOut); +//// inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId); +// return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); +// } else { +// return Result.error("金币不足,请输入正确的提现金币!"); +// } + return Result.success("作废"); } @@ -526,11 +535,13 @@ public class CashOutServiceImpl extends ServiceImpl impleme CashOut cashOut = new CashOut(); cashOut.setIsOut(false); cashOut.setMoney(money.toString()); + cashOut.setUserId(userId); if (isSys) { - cashOut.setSysUserId(userId); + cashOut.setUserType(2); } else { - cashOut.setUserId(userId); + cashOut.setUserType(1); } + cashOut.setZhifubao(alipayAccount); cashOut.setZhifubaoName(alipayName); @@ -542,49 +553,77 @@ public class CashOutServiceImpl extends ServiceImpl impleme String outOrderNo = AliPayOrderUtil.createOrderId(); 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) { - userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); - } else { - userMoney = userMoneyService.selectUserMoneyByUserId(userId); - } - //提现判断余额是否足够 - if (userMoney.getAmount().doubleValue() < money) { - return Result.success("可提现余额不足!"); - } + SysUserMoneyDetails sysUserMoneyDetails = new SysUserMoneyDetails(); + sysUserMoneyDetails.setUserId(userId); + sysUserMoneyDetails.setSysUserId(userId); + sysUserMoneyDetails.setTitle("[提现]"); + sysUserMoneyDetails.setContent("提现:" + money + "元"); + sysUserMoneyDetails.setType(2); + 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()))) { - cashOut.setStatus(4); - BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); - if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { + if (baseResp.getErrorMsg() != null) { + return Result.error(baseResp.getErrorMsg()); + } + } 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); - cashOut.setState(1); + cashOut.setState(3); } - - if (baseResp.getErrorMsg() != null) { - 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 { + userMoneyDetailsService.save(userMoneyDetails); + baseMapper.insert(cashOut); userMoneyService.updateAmount(2, userId, money); } return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); @@ -594,7 +633,52 @@ public class CashOutServiceImpl extends ServiceImpl impleme public PageUtils auditPage(Map params) { PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); CashOut cashOut = BeanUtil.toBean(params, CashOut.class); - List page = baseMapper.selectCashOutPage(cashOut, false); + + LambdaQueryWrapper 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 page = list(queryWrapper); + + if (!page.isEmpty()) { + Set userIdList = page.stream().map(CashOut::getUserId).collect(Collectors.toSet()); + Map 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 pageInfo = new PageInfo<>(page); return PageUtils.page(pageInfo); } @@ -602,7 +686,6 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public void audit(CashOut cashOut) { - long id = cashOut.getId(); Integer isAgree = cashOut.getIsAgree(); if (isAgree == null) { throw new SqxException("请选择同意或者拒绝!"); @@ -610,7 +693,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme if (isAgree == 0 && StrUtil.isBlank(cashOut.getRefund())) { throw new SqxException("请输入拒绝原因!"); } - CashOut entity = baseMapper.selectById(id); + CashOut entity = baseMapper.selectOne(new LambdaQueryWrapper().eq(CashOut::getUserId, cashOut.getUserId()).eq(CashOut::getId, cashOut.getId())); if (entity == null) { throw new SqxException("提现申请不存在!"); } @@ -624,18 +707,21 @@ public class CashOutServiceImpl extends ServiceImpl impleme entity.setRefund(cashOut.getRefund()); } - boolean isSysUser = entity.getSysUserId() != null; + boolean isUser = true; + if (entity.getUserType() == 2) { + isUser = false; + } - if (isSysUser) { - SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId()); - if (sysUserEntity == null) { - throw new SqxException("提现代理信息不存在!"); - } - } else { + if (isUser) { UserEntity userEntity = userService.selectUserById(entity.getUserId()); if (userEntity == null) { throw new SqxException("提现用户信息不存在!"); } + } else { + SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId()); + if (sysUserEntity == null) { + throw new SqxException("提现代理信息不存在!"); + } } if (isAgree == 0) { @@ -643,13 +729,13 @@ public class CashOutServiceImpl extends ServiceImpl impleme return; } entity.setState(4); - baseMapper.updateById(entity); + baseMapper.update(entity, new LambdaQueryWrapper().eq(CashOut::getUserId, entity.getUserId()).eq(CashOut::getId, entity.getId())); if (StrUtil.isBlank(entity.getOrderNumber())) { String outOrderNo = AliPayOrderUtil.createOrderId(); 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))) { entity.setState(1); } else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) { @@ -665,11 +751,18 @@ public class CashOutServiceImpl extends ServiceImpl impleme entity.setRefund("提现失败,请检查支付宝账号与收款人姓名后,重试。"); 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().eq(CashOut::getUserId, entity.getUserId()).eq(CashOut::getId, entity.getId())); } private void backCashAmount(CashOut entity) { - baseMapper.updateById(entity); + updateByUserId(entity); UserMoneyDetails userMoneyDetails = new UserMoneyDetails( entity.getUserId(), entity.getSysUserId(), null, "[提现退款]", 4, 1, 2, new BigDecimal(entity.getMoney()), "提现失败,自动退款" + entity.getMoney() + "元", 1, entity.getId()); diff --git a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java index 355beafc..d6eca136 100644 --- a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java +++ b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java @@ -41,7 +41,7 @@ public class WuyouPay { 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(); if (!"1".equals(payConfig)) { BaseResp baseResp = new BaseResp(); @@ -51,7 +51,7 @@ public class WuyouPay { Map params = getBaseParams(); params.put("type", "6001"); 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("notify_url", notifyUrl); @@ -68,9 +68,9 @@ public class WuyouPay { 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 params = getBaseParams(); - params.put("out_trade_no", orderNo); + params.put("out_trade_no", String.format("%s-%s", orderNo, userId)); params.put("total", amount); String sign = Encrypt.getParamsSign(params); @@ -116,7 +116,7 @@ public class WuyouPay { * @param account 支付宝账号 * @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(); if (!"1".equals(payConfig)) { BaseResp baseResp = new BaseResp(); @@ -125,7 +125,7 @@ public class WuyouPay { } Map 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("bank_card", account); params.put("bank_account_name", userName); @@ -151,10 +151,10 @@ public class WuyouPay { * @param account 支付宝账号 * @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 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("bank_card", account); params.put("bank_account_name", userName); @@ -174,9 +174,9 @@ public class WuyouPay { 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 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); String sign = Encrypt.getParamsSign(params); diff --git a/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java b/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java index 7f1c4280..048bcdec 100644 --- a/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java +++ b/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java @@ -72,8 +72,8 @@ public class SdkInfoServiceImpl extends ServiceImpl impleme limit = -1; } PageHelper.startPage(page, limit); - List sdkList = baseMapper.getSdkList(sdkInfo); - return PageUtils.page(new PageInfo<>(sdkList), true); +// List sdkList = baseMapper.getSdkList(sdkInfo); + return PageUtils.page(new PageInfo<>(new ArrayList<>()), true); } @Override diff --git a/src/main/java/com/sqx/modules/sys/dao/SysUserMoneyDao.java b/src/main/java/com/sqx/modules/sys/dao/SysUserMoneyDao.java new file mode 100644 index 00000000..0162aa2a --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/dao/SysUserMoneyDao.java @@ -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 { + + void updateSysMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money); + +} + diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserMoney.java b/src/main/java/com/sqx/modules/sys/entity/SysUserMoney.java new file mode 100644 index 00000000..f8494eb0 --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserMoney.java @@ -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 { + @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; + + +} + diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java b/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java index 3376e58c..e1f98799 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -39,22 +41,26 @@ public class SysUserMoneyDetails implements Serializable { /** * 钱包详情id */ - @TableId(type = IdType.AUTO) + @TableId(type = IdType.ID_WORKER) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 渠道用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; /** * 对应用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long byUserId; /** @@ -110,6 +116,7 @@ public class SysUserMoneyDetails implements Serializable { /** * 源id */ + @JsonSerialize(using = ToStringSerializer.class) private Long sourceId; @TableField(exist = false) diff --git a/src/main/java/com/sqx/modules/sys/service/SysUserMoneyService.java b/src/main/java/com/sqx/modules/sys/service/SysUserMoneyService.java new file mode 100644 index 00000000..6f887b3c --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/service/SysUserMoneyService.java @@ -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 selectSysUserMoneyByUserId(Long userId); + + void updateSysMoney(int i, Long userId, double money); + + +} + diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyServiceImpl.java new file mode 100644 index 00000000..1bbf10a0 --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyServiceImpl.java @@ -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 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().eq("user_id", userId)); + if(userMoney==null){ + userMoney=new SysUserMoney(); + userMoney.setUserId(userId); + userMoney.setMoney(new BigDecimal("0.00")); + baseMapper.insert(userMoney); + } + return userMoney; + } +} + diff --git a/src/main/resources/application-pay.yml b/src/main/resources/application-pay.yml index 742eef2d..a0f37526 100644 --- a/src/main/resources/application-pay.yml +++ b/src/main/resources/application-pay.yml @@ -22,7 +22,7 @@ spring: # sharding-jdbc 配置 shardingsphere: # 显示sharding-jdbc改写的sql语句 - show-sql: true + show-sql: false center-tables-data-node: duanju.%s # 区域表的数据源节点 @@ -99,66 +99,66 @@ spring: max-lifetime: ${max-lifetime} connection-timeout: ${connection-timeout} - duanju-slave: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-0: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-1: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-2: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-3: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-4: - 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 - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} +# duanju-slave: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-0: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-1: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-2: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-3: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-4: +# 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 +# username: root +# password: VideoUser1@ +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} # 数据源配置end # 读写分离配置begin @@ -167,30 +167,30 @@ spring: duanju: masterDataSourceName: duanju slaveDataSourceNames: - # - duanju - - duanju-slave + - duanju +# - duanju-slave duanju-0: masterDataSourceName: duanju-0 slaveDataSourceNames: - # - duanju-0 - - duanju-slave-0 + - duanju-0 +# - duanju-slave-0 duanju-1: masterDataSourceName: duanju-1 slaveDataSourceNames: - # - duanju-1 - - duanju-slave-1 + - duanju-1 +# - duanju-slave-1 duanju-2: masterDataSourceName: duanju-2 slaveDataSourceNames: - # - duanju-2 - - duanju-slave-2 + - duanju-2 +# - duanju-slave-2 duanju-3: masterDataSourceName: duanju-3 slaveDataSourceNames: - # - duanju-3 - - duanju-slave-3 + - duanju-3 +# - duanju-slave-3 duanju-4: masterDataSourceName: duanju-4 slaveDataSourceNames: - # - duanju-4 - - duanju-slave-4 + - duanju-4 +# - duanju-slave-4 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 0f937e6b..ebbbbcee 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -22,7 +22,7 @@ spring: # sharding-jdbc 配置 shardingsphere: # 显示sharding-jdbc改写的sql语句 - show-sql: true + show-sql: false center-tables-data-node: duanju.%s # 区域表的数据源节点 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a41f1bc6..18f9ac3d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,10 +1,3 @@ -#logging: -# file: -# name: logs/duanju.log -# 日志配置 -logging: - config: classpath:logback.xml - # Tomcat server: tomcat: @@ -17,45 +10,6 @@ server: servlet: 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: main: allow-circular-references: true @@ -116,6 +70,7 @@ spring: - sys_user #中心表 center-tables: + - sys_user_money - course - message_info - announcement @@ -172,3 +127,46 @@ spring: - qrtz_cron_triggers - qrtz_calendars - 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 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 417330bb..b1a95c4f 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -18,7 +18,7 @@ logs/duanju.log - logs/duanju.%d{yyyy-MM-dd}.%i.log.gz + logs/%d{yyyy-MM-dd}/duanju.%i.log.gz 30 100MB diff --git a/src/main/resources/mapper/course/CourseDetailsDao.xml b/src/main/resources/mapper/course/CourseDetailsDao.xml index b33dbe22..f49e8d58 100644 --- a/src/main/resources/mapper/course/CourseDetailsDao.xml +++ b/src/main/resources/mapper/course/CourseDetailsDao.xml @@ -15,7 +15,6 @@ , c.title_img as titleImg , c.good_num as goodNum , c.sort as sort - , IF(#{collect} = 1, 1, 0) AS isCollect from course_details c where c.course_id = #{courseId} order by c.sort asc diff --git a/src/main/resources/mapper/orders/OrdersDao.xml b/src/main/resources/mapper/orders/OrdersDao.xml index 6237cad6..802d6beb 100644 --- a/src/main/resources/mapper/orders/OrdersDao.xml +++ b/src/main/resources/mapper/orders/OrdersDao.xml @@ -205,7 +205,8 @@ select - ifnull(sum(one_money),0.00) + sum(ifnull(one_money,0.00)) - ifnull(sum(two_money),0.00) + sum(ifnull(two_money,0.00)) - ifnull(sum(qd_money),0.00) - - - ifnull(sum(one_money),0.00)+ifnull(sum(two_money),0.00)+ifnull(sum(qd_money),0.00) + sum(ifnull(qd_money,0.00)) from orders where status=1 diff --git a/src/main/resources/mapper/pay/CashDao.xml b/src/main/resources/mapper/pay/CashDao.xml index 140f2b9e..81fbb266 100644 --- a/src/main/resources/mapper/pay/CashDao.xml +++ b/src/main/resources/mapper/pay/CashDao.xml @@ -61,10 +61,24 @@ GROUP BY user_id + + + + +