123
This commit is contained in:
@@ -1,96 +0,0 @@
|
|||||||
package com.ruoyi.cai.controller.admin;
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.cai.domain.AccountDetail;
|
|
||||||
import com.ruoyi.cai.service.AccountDetailService;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
|
||||||
import com.ruoyi.common.core.domain.R;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.validate.AddGroup;
|
|
||||||
import com.ruoyi.common.core.validate.EditGroup;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账户明细
|
|
||||||
*
|
|
||||||
* @author 77
|
|
||||||
* @date 2023-12-22
|
|
||||||
*/
|
|
||||||
@Validated
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/cai/accountDetail")
|
|
||||||
public class AccountDetailController extends BaseController {
|
|
||||||
|
|
||||||
private final AccountDetailService caiAccountDetailService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询账户明细列表
|
|
||||||
*/
|
|
||||||
@SaCheckPermission("cai:accountDetail:list")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo<AccountDetail> list(AccountDetail bo, PageQuery pageQuery) {
|
|
||||||
Page<AccountDetail> page = caiAccountDetailService.page(pageQuery.build(),
|
|
||||||
Wrappers.lambdaQuery(bo).orderByDesc(AccountDetail::getCreateTime));
|
|
||||||
return TableDataInfo.build(page);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取账户明细详细信息
|
|
||||||
*
|
|
||||||
* @param id 主键
|
|
||||||
*/
|
|
||||||
@SaCheckPermission("cai:accountDetail:query")
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
public R<AccountDetail> getInfo(@NotNull(message = "主键不能为空")
|
|
||||||
@PathVariable Long id) {
|
|
||||||
return R.ok(caiAccountDetailService.getById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增账户明细
|
|
||||||
*/
|
|
||||||
@SaCheckPermission("cai:accountDetail:add")
|
|
||||||
@Log(title = "账户明细", businessType = BusinessType.INSERT)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PostMapping()
|
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody AccountDetail bo) {
|
|
||||||
return toAjax(caiAccountDetailService.save(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改账户明细
|
|
||||||
*/
|
|
||||||
@SaCheckPermission("cai:accountDetail:edit")
|
|
||||||
@Log(title = "账户明细", businessType = BusinessType.UPDATE)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PutMapping()
|
|
||||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody AccountDetail bo) {
|
|
||||||
return toAjax(caiAccountDetailService.updateById(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除账户明细
|
|
||||||
*
|
|
||||||
* @param ids 主键串
|
|
||||||
*/
|
|
||||||
@SaCheckPermission("cai:accountDetail:remove")
|
|
||||||
@Log(title = "账户明细", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
|
||||||
@PathVariable Long[] ids) {
|
|
||||||
return toAjax(caiAccountDetailService.removeBatchByIds(Arrays.asList(ids)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,6 @@ import com.ruoyi.cai.service.RechargeOrderService;
|
|||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
import com.ruoyi.common.utils.BeanConvertUtil;
|
import com.ruoyi.common.utils.BeanConvertUtil;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ruoyi.cai.domain;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
|
||||||
@@ -34,6 +35,9 @@ public class AccountChangeLog implements Serializable {
|
|||||||
* 蜜瓜号
|
* 蜜瓜号
|
||||||
*/
|
*/
|
||||||
private String usercode;
|
private String usercode;
|
||||||
|
private Long tarUserId;
|
||||||
|
private String tarParam;
|
||||||
|
private String tarImg;
|
||||||
/**
|
/**
|
||||||
* 账户类型 1-余额 2-收益
|
* 账户类型 1-余额 2-收益
|
||||||
*/
|
*/
|
||||||
@@ -70,4 +74,14 @@ public class AccountChangeLog implements Serializable {
|
|||||||
|
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
|
||||||
|
public void init(AccountChangeCodeEnum change){
|
||||||
|
this.setAccountType(change.getAccountType().getCode());
|
||||||
|
this.setCateId(change.getCate().getCode());
|
||||||
|
this.setCateAppName(change.getText());
|
||||||
|
this.setCateAdminName(change.getText());
|
||||||
|
this.setTraceLinkType(change.getCate().name());
|
||||||
|
this.setRemark(change.getDesc());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.ruoyi.cai.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账户明细对象 cai_account_detail
|
|
||||||
*
|
|
||||||
* @author 77
|
|
||||||
* @date 2023-12-22
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("cai_account_detail")
|
|
||||||
public class AccountDetail implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID=1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 积分记录ID
|
|
||||||
*/
|
|
||||||
@TableId(value = "id",type = IdType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
/**
|
|
||||||
* 用户ID
|
|
||||||
*/
|
|
||||||
private Long userId;
|
|
||||||
/**
|
|
||||||
* 账户类型ID 1 。充值的金额 2 。收益的金额 3 。充值的彩币 4 收益的彩币
|
|
||||||
*/
|
|
||||||
private Integer accountType;
|
|
||||||
/**
|
|
||||||
* 类别
|
|
||||||
*/
|
|
||||||
private Integer cateId;
|
|
||||||
/**
|
|
||||||
* 业务码
|
|
||||||
*/
|
|
||||||
private Long businessCode;
|
|
||||||
/**
|
|
||||||
* 订单号
|
|
||||||
*/
|
|
||||||
private String orderNo;
|
|
||||||
/**
|
|
||||||
* 原有积分
|
|
||||||
*/
|
|
||||||
private BigDecimal beforeAmount;
|
|
||||||
/**
|
|
||||||
* 变化后积分
|
|
||||||
*/
|
|
||||||
private BigDecimal afterAmount;
|
|
||||||
/**
|
|
||||||
* 变化值,为正 或者为负
|
|
||||||
*/
|
|
||||||
private BigDecimal changeValue;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private Long trackUserId;
|
|
||||||
/**
|
|
||||||
* 跟踪的关键字
|
|
||||||
*/
|
|
||||||
private String trackParam;
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
/**
|
|
||||||
* 操作IP
|
|
||||||
*/
|
|
||||||
private String operateIp;
|
|
||||||
/**
|
|
||||||
* 是否为后台用户手动调整
|
|
||||||
*/
|
|
||||||
private Integer isAdmin;
|
|
||||||
|
|
||||||
private LocalDateTime createTime;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -34,8 +34,7 @@ public class ConsumeLog implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 业务状态码
|
* 业务状态码
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
private String businessParam;
|
||||||
private String businessEnum;
|
|
||||||
/**
|
/**
|
||||||
* 跟踪ID
|
* 跟踪ID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.ruoyi.cai.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.ruoyi.cai.domain.AccountDetail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账户明细Mapper接口
|
|
||||||
*
|
|
||||||
* @author 77
|
|
||||||
* @date 2023-12-22
|
|
||||||
*/
|
|
||||||
public interface AccountDetailMapper extends BaseMapper<AccountDetail> {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.cai.domain.AccountChangeLog;
|
import com.ruoyi.cai.domain.AccountChangeLog;
|
||||||
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12,9 +13,15 @@ import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
|||||||
*/
|
*/
|
||||||
public interface AccountChangeLogService extends IService<AccountChangeLog> {
|
public interface AccountChangeLogService extends IService<AccountChangeLog> {
|
||||||
|
|
||||||
|
AccountChangeLog getLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
|
||||||
|
|
||||||
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
|
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
|
||||||
|
|
||||||
AccountChangeLog saveLog(Long userId,String usercode, AccountChangeCodeEnum change, Long price, Long traceId,Integer admin);
|
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
|
||||||
|
, Long tarUserId);
|
||||||
|
|
||||||
AccountChangeLog saveLogAdmin(Long userId,String usercode, AccountChangeCodeEnum change, Long price,Long traceId);
|
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
|
||||||
|
, Long tarUserId, Gift gift);
|
||||||
|
|
||||||
|
AccountChangeLog saveLogAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.ruoyi.cai.service;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
import com.ruoyi.cai.domain.AccountDetail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账户明细Service接口
|
|
||||||
*
|
|
||||||
* @author 77
|
|
||||||
* @date 2023-12-22
|
|
||||||
*/
|
|
||||||
public interface AccountDetailService extends IService<AccountDetail> {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.cai.domain.Account;
|
import com.ruoyi.cai.domain.Account;
|
||||||
import com.ruoyi.cai.domain.ConsumeLog;
|
import com.ruoyi.cai.domain.ConsumeLog;
|
||||||
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
||||||
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
||||||
@@ -12,7 +13,6 @@ import com.ruoyi.cai.enums.ConsumeLogType;
|
|||||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||||
import com.ruoyi.cai.ws.bean.Room;
|
import com.ruoyi.cai.ws.bean.Room;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户账户Service接口
|
* 用户账户Service接口
|
||||||
@@ -24,7 +24,9 @@ public interface AccountService extends IService<Account> {
|
|||||||
|
|
||||||
Account getByUserId(Long userId);
|
Account getByUserId(Long userId);
|
||||||
|
|
||||||
ConsumeLog decr(ConsumeLog log, ConsumeLogType consumeLogType);
|
ConsumeLog guardDecr(ConsumeLog log, ConsumeLogType consumeLogType);
|
||||||
|
|
||||||
|
ConsumeLog giftDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType, Gift gift);
|
||||||
|
|
||||||
Long imDesc(User fromUser, User toUser, Long price);
|
Long imDesc(User fromUser, User toUser, Long price);
|
||||||
|
|
||||||
@@ -36,7 +38,7 @@ public interface AccountService extends IService<Account> {
|
|||||||
|
|
||||||
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
|
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
|
||||||
|
|
||||||
void distribution(Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum, Long traceId);
|
void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum);
|
||||||
|
|
||||||
WithholdingFeeUserResp withholdingFeeUser(Long userId, Long price);
|
WithholdingFeeUserResp withholdingFeeUser(Long userId, Long price);
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ruoyi.cai.service.impl;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.ruoyi.cai.domain.AccountChangeLog;
|
import com.ruoyi.cai.domain.AccountChangeLog;
|
||||||
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||||
import com.ruoyi.cai.mapper.AccountChangeLogMapper;
|
import com.ruoyi.cai.mapper.AccountChangeLogMapper;
|
||||||
import com.ruoyi.cai.service.AccountChangeLogService;
|
import com.ruoyi.cai.service.AccountChangeLogService;
|
||||||
@@ -16,33 +17,56 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class AccountChangeLogServiceImpl extends ServiceImpl<AccountChangeLogMapper,AccountChangeLog> implements AccountChangeLogService {
|
public class AccountChangeLogServiceImpl extends ServiceImpl<AccountChangeLogMapper,AccountChangeLog> implements AccountChangeLogService {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
|
public AccountChangeLog getLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
|
||||||
return this.saveLog(userId,usercode,change,price,traceId,0);
|
return this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccountChangeLog saveLog(Long userId,String usercode, AccountChangeCodeEnum change, Long price, Long traceId,Integer admin){
|
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
|
||||||
|
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
|
||||||
|
this.save(changeLog);
|
||||||
|
return changeLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
|
||||||
|
,Long tarUserId){
|
||||||
|
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
|
||||||
|
changeLog.setTarUserId(userId);
|
||||||
|
this.save(changeLog);
|
||||||
|
return changeLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
|
||||||
|
, Long tarUserId, Gift gift){
|
||||||
|
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
|
||||||
|
changeLog.setTarUserId(userId);
|
||||||
|
if(gift != null){
|
||||||
|
changeLog.setTarParam(gift.getId()+"");
|
||||||
|
changeLog.setTarImg(gift.getImg());
|
||||||
|
}
|
||||||
|
this.save(changeLog);
|
||||||
|
return changeLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccountChangeLog getAccountChangeLog(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId, Integer admin){
|
||||||
AccountChangeLog log = new AccountChangeLog();
|
AccountChangeLog log = new AccountChangeLog();
|
||||||
|
log.init(change);
|
||||||
log.setUserId(userId);
|
log.setUserId(userId);
|
||||||
log.setUsercode(usercode);
|
log.setUsercode(usercode);
|
||||||
log.setTraceId(traceId);
|
log.setTraceId(traceId);
|
||||||
log.setAccountType(change.getAccountType().getCode());
|
|
||||||
log.setCateId(change.getCate().getCode());
|
|
||||||
log.setCateAppName(change.getText());
|
|
||||||
log.setCateAdminName(change.getText());
|
|
||||||
log.setTraceLinkType(change.getCate().name());
|
|
||||||
log.setRemark(change.getDesc());
|
|
||||||
log.setChangeValue(price);
|
log.setChangeValue(price);
|
||||||
log.setIsAdmin(admin);
|
log.setIsAdmin(admin);
|
||||||
this.save(log);
|
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccountChangeLog saveLogAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price,Long traceId) {
|
public AccountChangeLog saveLogAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price,Long traceId) {
|
||||||
return this.saveLog(userId,usercode,change,price,traceId,1);
|
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 1);
|
||||||
|
this.save(changeLog);
|
||||||
|
return changeLog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.ruoyi.cai.service.impl;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import com.ruoyi.cai.domain.AccountDetail;
|
|
||||||
import com.ruoyi.cai.mapper.AccountDetailMapper;
|
|
||||||
import com.ruoyi.cai.service.AccountDetailService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 账户明细Service业务层处理
|
|
||||||
*
|
|
||||||
* @author 77
|
|
||||||
* @date 2023-12-22
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class AccountDetailServiceImpl extends ServiceImpl<AccountDetailMapper, AccountDetail> implements AccountDetailService {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.ruoyi.cai.config.CaiProperties;
|
import com.ruoyi.cai.config.CaiProperties;
|
||||||
import com.ruoyi.cai.domain.Account;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.domain.ConsumeLog;
|
|
||||||
import com.ruoyi.cai.domain.User;
|
|
||||||
import com.ruoyi.cai.domain.UserCall;
|
|
||||||
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
||||||
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
||||||
import com.ruoyi.cai.dto.video.WithholdingFeeUserResp;
|
import com.ruoyi.cai.dto.video.WithholdingFeeUserResp;
|
||||||
@@ -65,11 +62,16 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ConsumeLog decr(ConsumeLog consumeLog, ConsumeLogType consumeLogType) {
|
public ConsumeLog guardDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType){
|
||||||
|
return giftDecr(consumeLog,consumeLogType,null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public ConsumeLog giftDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType, Gift gift) {
|
||||||
log.info("开始扣费 consumeLog={}", JSON.toJSONString(consumeLog));
|
log.info("开始扣费 consumeLog={}", JSON.toJSONString(consumeLog));
|
||||||
Long userId = consumeLog.getSourceUserId();
|
Long userId = consumeLog.getSourceUserId();
|
||||||
Long amount = consumeLog.getAmount();
|
Long amount = consumeLog.getAmount();
|
||||||
|
|
||||||
Account account = this.getByUserId(userId);
|
Account account = this.getByUserId(userId);
|
||||||
long totalCoin = account.getIncomeCoin() + account.getCoin();
|
long totalCoin = account.getIncomeCoin() + account.getCoin();
|
||||||
if(totalCoin < amount){
|
if(totalCoin < amount){
|
||||||
@@ -105,16 +107,19 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
// 记录消费方的流水
|
// 记录消费方的流水
|
||||||
if(coin != 0){
|
if(coin != 0){
|
||||||
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.COIN);
|
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.COIN);
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,consumeLog.getSourceUsercode(), change, coin,consumeLog.getTraceId());
|
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
|
||||||
|
,consumeLog.getTargetUserId(),gift);
|
||||||
}
|
}
|
||||||
if(incomeCoin != 0){
|
if(incomeCoin != 0){
|
||||||
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.INCOME_COIN);
|
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.INCOME_COIN);
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,consumeLog.getSourceUsercode(), change,incomeCoin,consumeLog.getTraceId());
|
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
|
||||||
|
,consumeLog.getTargetUserId(),gift);
|
||||||
}
|
}
|
||||||
// 记录接收方的流水
|
// 记录接收方的流水
|
||||||
if(targetUserId != null){
|
if(targetUserId != null){
|
||||||
AccountChangeCodeEnum change = ConsumeLogType.getTargetChange(consumeLogType);
|
AccountChangeCodeEnum change = ConsumeLogType.getTargetChange(consumeLogType);
|
||||||
accountChangeLogService.saveLogNoAdmin(targetUserId,consumeLog.getTargetUsercode(), change,consumeLog.getAnchorAmount(),consumeLog.getTraceId());
|
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
|
||||||
|
,consumeLog.getSourceUserId(),gift);
|
||||||
}
|
}
|
||||||
// 获取分销的比例和用户
|
// 获取分销的比例和用户
|
||||||
consumeLogService.calculateInitFenxiao(consumeLog);
|
consumeLogService.calculateInitFenxiao(consumeLog);
|
||||||
@@ -158,14 +163,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
Long tractId = IdManager.nextId();
|
Long tractId = IdManager.nextId();
|
||||||
// 记录消费方的流水
|
// 记录消费方的流水
|
||||||
if(coin != 0){
|
if(coin != 0){
|
||||||
accountChangeLogService.saveLogNoAdmin(fromUserId,fromUser.getUsercode(), AccountChangeCodeEnum.IM_COIN_OUT, coin, tractId);
|
accountChangeLogService.saveLogNoAdmin(fromUser.getId(),fromUser.getUsercode(), AccountChangeCodeEnum.IM_COIN_OUT, coin, tractId, toUser.getId());
|
||||||
}
|
}
|
||||||
if(incomeCoin != 0){
|
if(incomeCoin != 0){
|
||||||
accountChangeLogService.saveLogNoAdmin(fromUserId,fromUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME_COIN_OUT,incomeCoin,tractId);
|
accountChangeLogService.saveLogNoAdmin(fromUser.getId(),fromUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME_COIN_OUT,incomeCoin,tractId,toUser.getId());
|
||||||
}
|
}
|
||||||
// 记录接收方的流水
|
// 记录接收方的流水
|
||||||
if(anchorAmount != 0){
|
if(anchorAmount != 0){
|
||||||
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId);
|
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId,fromUser.getId());
|
||||||
}
|
}
|
||||||
return tractId;
|
return tractId;
|
||||||
}
|
}
|
||||||
@@ -224,11 +229,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GiftService giftService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分销
|
* 分销
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void distribution(Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum,Long traceId) {
|
public void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum) {
|
||||||
User user = userService.getById(userId);
|
User user = userService.getById(userId);
|
||||||
Account account = this.getByUserId(userId);
|
Account account = this.getByUserId(userId);
|
||||||
if(account == null || user == null){
|
if(account == null || user == null){
|
||||||
@@ -240,7 +248,18 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
baseMapper.incsCoin(userId, amount);
|
baseMapper.incsCoin(userId, amount);
|
||||||
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,traceId);
|
if(ConsumeLogType.GIFT.getCode().equals(consumeLog.getType())){ // 礼物
|
||||||
|
Gift gift = giftService.getById(consumeLog.getBusinessParam());
|
||||||
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
|
consumeLog.getTargetUserId(),gift);
|
||||||
|
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())
|
||||||
|
|| ConsumeLogType.GUARD.getCode().equals(consumeLog.getType())){ // 视频和守护
|
||||||
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
|
consumeLog.getTargetUserId());
|
||||||
|
}else if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ // 充值
|
||||||
|
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
|
||||||
|
consumeLog.getSourceUserId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -299,6 +318,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
Long callTime = roomService.getCallTime(room);
|
Long callTime = roomService.getCallTime(room);
|
||||||
// 本次支付金额
|
// 本次支付金额
|
||||||
long totalAmount = callPrice * ((callTime / 60) + 1); // 本次需要支付的金额
|
long totalAmount = callPrice * ((callTime / 60) + 1); // 本次需要支付的金额
|
||||||
|
if(callTime % 60 == 0){
|
||||||
|
totalAmount = callPrice * (callTime / 60);
|
||||||
|
}
|
||||||
Long payCoin = roomData.getPayCoin(); // 已经支付的余额
|
Long payCoin = roomData.getPayCoin(); // 已经支付的余额
|
||||||
Long payIncome = roomData.getPayIncome(); // 已经支付的收益
|
Long payIncome = roomData.getPayIncome(); // 已经支付的收益
|
||||||
// 补差价
|
// 补差价
|
||||||
|
|||||||
@@ -94,13 +94,13 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
|
|||||||
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
|
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
|
||||||
&& consumer.getOneAmount() > 0){
|
&& consumer.getOneAmount() > 0){
|
||||||
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
|
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
|
||||||
accountService.distribution(consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum,consumer.getTraceId());
|
accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum);
|
||||||
}
|
}
|
||||||
// 计算工会
|
// 计算工会
|
||||||
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
|
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
|
||||||
&& consumer.getUnionAmount() > 0){
|
&& consumer.getUnionAmount() > 0){
|
||||||
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
|
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
|
||||||
accountService.distribution(consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum,consumer.getTraceId());
|
accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("分销发生未知错误,请联系开发检查!",e);
|
log.error("分销发生未知错误,请联系开发检查!",e);
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ public class GuardTotalServiceImpl extends ServiceImpl<GuardTotalMapper, GuardTo
|
|||||||
consumeLog.setType(ConsumeLogType.GUARD.getCode());
|
consumeLog.setType(ConsumeLogType.GUARD.getCode());
|
||||||
consumeLog.setAmount(guardValue);
|
consumeLog.setAmount(guardValue);
|
||||||
consumeLog.setTargetRate(anchor.getGuardRate());
|
consumeLog.setTargetRate(anchor.getGuardRate());
|
||||||
consumeLog = accountService.decr(consumeLog, ConsumeLogType.GUARD);
|
consumeLog = accountService.guardDecr(consumeLog, ConsumeLogType.GUARD);
|
||||||
resp.setConsumeLogId(consumeLog.getId());
|
resp.setConsumeLogId(consumeLog.getId());
|
||||||
GuardLog guardLog = new GuardLog();
|
GuardLog guardLog = new GuardLog();
|
||||||
guardLog.setFromUserId(fromUserId);
|
guardLog.setFromUserId(fromUserId);
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class UserGiftServiceImpl extends ServiceImpl<UserGiftMapper, UserGift> i
|
|||||||
consumeLog.setType(ConsumeLogType.GIFT.getCode());
|
consumeLog.setType(ConsumeLogType.GIFT.getCode());
|
||||||
consumeLog.setAmount(giftAmount);
|
consumeLog.setAmount(giftAmount);
|
||||||
consumeLog.setTargetRate(anchor.getGiftRate());
|
consumeLog.setTargetRate(anchor.getGiftRate());
|
||||||
consumeLog = accountService.decr(consumeLog, ConsumeLogType.GIFT);
|
consumeLog = accountService.giftDecr(consumeLog, ConsumeLogType.GIFT, gift);
|
||||||
resp.setConsumeLogId(consumeLog.getId());
|
resp.setConsumeLogId(consumeLog.getId());
|
||||||
UserGift userGift = new UserGift();
|
UserGift userGift = new UserGift();
|
||||||
userGift.setType(query.getType());
|
userGift.setType(query.getType());
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
<?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.ruoyi.cai.mapper.AccountDetailMapper">
|
|
||||||
|
|
||||||
<resultMap type="com.ruoyi.cai.domain.AccountDetail" id="CaiAccountDetailResult">
|
|
||||||
<result property="id" column="id"/>
|
|
||||||
<result property="userId" column="user_id"/>
|
|
||||||
<result property="accountType" column="account_type"/>
|
|
||||||
<result property="cateId" column="cate_id"/>
|
|
||||||
<result property="businessCode" column="business_code"/>
|
|
||||||
<result property="orderNo" column="order_no"/>
|
|
||||||
<result property="beforeAmount" column="before_amount"/>
|
|
||||||
<result property="afterAmount" column="after_amount"/>
|
|
||||||
<result property="changeValue" column="change_value"/>
|
|
||||||
<result property="createTime1" column="create_time_1"/>
|
|
||||||
<result property="createTime" column="create_time"/>
|
|
||||||
<result property="trackUserId" column="track_user_id"/>
|
|
||||||
<result property="trackParam" column="track_param"/>
|
|
||||||
<result property="remark" column="remark"/>
|
|
||||||
<result property="operateIp" column="operate_ip"/>
|
|
||||||
<result property="isAdmin" column="is_admin"/>
|
|
||||||
</resultMap>
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
|
||||||
Reference in New Issue
Block a user