This commit is contained in:
77
2024-03-17 19:04:48 +08:00
parent a53c70842b
commit bd4ad464a5
23 changed files with 371 additions and 76 deletions

View File

@@ -13,6 +13,9 @@ import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.UserAuthAudit; import com.ruoyi.xq.domain.UserAuthAudit;
import com.ruoyi.xq.dto.admin.common.AuditFailReq;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAuditAdminVo;
import com.ruoyi.xq.dto.app.common.IdsReq;
import com.ruoyi.xq.service.UserAuthAuditService; import com.ruoyi.xq.service.UserAuthAuditService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -41,8 +44,8 @@ public class UserAuthAuditController extends BaseController {
*/ */
@SaCheckPermission("xq:userAuthAudit:list") @SaCheckPermission("xq:userAuthAudit:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<UserAuthAudit> list(UserAuthAudit bo, PageQuery pageQuery) { public TableDataInfo<UserAuthAuditAdminVo> list(UserAuthAuditAdminVo bo, PageQuery pageQuery) {
Page<UserAuthAudit> page = userAuthAuditService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<UserAuthAuditAdminVo> page = userAuthAuditService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@@ -93,4 +96,24 @@ public class UserAuthAuditController extends BaseController {
@PathVariable Long[] ids) { @PathVariable Long[] ids) {
return toAjax(userAuthAuditService.removeBatchByIds(Arrays.asList(ids))); return toAjax(userAuthAuditService.removeBatchByIds(Arrays.asList(ids)));
} }
@SaCheckPermission("xq:userAuthAudit:edit")
@Log(title = "用户认证审核成功", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/audit/success")
public R<Void> auditSuccess(@RequestBody IdsReq bo) {
userAuthAuditService.auditSuccess(bo.getIds());
return R.ok();
}
@SaCheckPermission("xq:userAuthAudit:edit")
@Log(title = "用户认证审核失败", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/audit/fail")
public R<Void> auditFail(@RequestBody AuditFailReq bo) {
userAuthAuditService.auditFail(bo.getId(), bo.getAuditRemark());
return R.ok();
}
} }

View File

@@ -13,6 +13,10 @@ import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.UserWithdraw; import com.ruoyi.xq.domain.UserWithdraw;
import com.ruoyi.xq.dto.admin.common.AuditFailReq;
import com.ruoyi.xq.dto.admin.withdraw.UserWithdrawAdminVo;
import com.ruoyi.xq.dto.admin.withdraw.WithdrawSuccessAdminReq;
import com.ruoyi.xq.dto.app.common.IdsReq;
import com.ruoyi.xq.service.UserWithdrawService; import com.ruoyi.xq.service.UserWithdrawService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -41,8 +45,8 @@ public class UserWithdrawController extends BaseController {
*/ */
@SaCheckPermission("xq:userWithdraw:list") @SaCheckPermission("xq:userWithdraw:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<UserWithdraw> list(UserWithdraw bo, PageQuery pageQuery) { public TableDataInfo<UserWithdrawAdminVo> list(UserWithdrawAdminVo bo, PageQuery pageQuery) {
Page<UserWithdraw> page = userWithdrawService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<UserWithdrawAdminVo> page = userWithdrawService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@@ -59,28 +63,25 @@ public class UserWithdrawController extends BaseController {
return R.ok(userWithdrawService.getById(id)); return R.ok(userWithdrawService.getById(id));
} }
/** @SaCheckPermission("xq:userWithdraw:edit")
* 新增用户提现审核 @Log(title = "用户提现审核成功", businessType = BusinessType.UPDATE)
*/
@SaCheckPermission("xq:userWithdraw:add")
@Log(title = "用户提现审核", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping("/audit/success")
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserWithdraw bo) { public R<Void> auditSuccess(@RequestBody WithdrawSuccessAdminReq bo) {
return toAjax(userWithdrawService.save(bo)); userWithdrawService.auditSuccess(bo.getId(), bo.isAutoTrans());
return R.ok();
} }
/**
* 修改用户提现审核
*/
@SaCheckPermission("xq:userWithdraw:edit") @SaCheckPermission("xq:userWithdraw:edit")
@Log(title = "用户提现审核", businessType = BusinessType.UPDATE) @Log(title = "用户提现审核失败", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PostMapping("/audit/fail")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserWithdraw bo) { public R<Void> auditFail(@RequestBody AuditFailReq bo) {
return toAjax(userWithdrawService.updateById(bo)); userWithdrawService.auditFail(bo.getId(), bo.getAuditRemark());
return R.ok();
} }
/** /**
* 删除用户提现审核 * 删除用户提现审核
* *

View File

@@ -11,7 +11,6 @@ import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.WithdrawSetting; import com.ruoyi.xq.domain.WithdrawSetting;
import com.ruoyi.xq.dto.app.common.IdReq; import com.ruoyi.xq.dto.app.common.IdReq;
import com.ruoyi.xq.dto.app.common.IdsReq;
import com.ruoyi.xq.dto.app.setting.WithdrawSettingVo; import com.ruoyi.xq.dto.app.setting.WithdrawSettingVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery;
@@ -27,7 +26,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/withdraw") @RequestMapping("/api/withdraw")
@Tag(name = "提现接口") @Tag(name = "提现接口")
public class WithdrawController { public class WithdrawAppController {
@Autowired @Autowired
private WithdrawSettingService withdrawSettingService; private WithdrawSettingService withdrawSettingService;
@@ -54,7 +53,7 @@ public class WithdrawController {
return R.ok(); return R.ok();
} }
@PostMapping("/logs/page") @GetMapping("/logs/page")
@Operation(summary = "提现记录") @Operation(summary = "提现记录")
@Log(title = "申请记录", businessType = BusinessType.OTHER, isSaveDb = false) @Log(title = "申请记录", businessType = BusinessType.OTHER, isSaveDb = false)
public R<List<WithdrawListAppVo>> logsPage(PageQuery pageQuery, WithdrawListPageQuery query){ public R<List<WithdrawListAppVo>> logsPage(PageQuery pageQuery, WithdrawListPageQuery query){

View File

@@ -52,7 +52,7 @@ public class UserAuthAudit implements Serializable {
/** /**
* 其他字段 * 其他字段
*/ */
private String auitOther; private String authOther;
/** /**
* 1-待审核 2-审核成功 3-审核失败 * 1-待审核 2-审核成功 3-审核失败
*/ */

View File

@@ -0,0 +1,15 @@
package com.ruoyi.xq.dto.admin.userauth;
import com.ruoyi.xq.domain.UserAuthAudit;
import lombok.Data;
@Data
public class UserAuthAuditAdminVo extends UserAuthAudit {
/**
* 昵称
*/
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.xq.dto.admin.withdraw;
import com.ruoyi.xq.domain.UserWithdraw;
import lombok.Data;
@Data
public class UserWithdrawAdminVo extends UserWithdraw {
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.xq.dto.admin.withdraw;
import lombok.Data;
@Data
public class WithdrawSuccessAdminReq {
private Long id;
private boolean autoTrans;
}

View File

@@ -17,7 +17,7 @@ public class UpdateUserAuthInfoReq {
/** /**
* 工作认证类型 * 工作认证类型
*/ */
@Schema(description = "工作认证类型") @Schema(description = "工作认证类型 1-企业微信 2-offer 3-工作证")
private Integer jobAuthType; private Integer jobAuthType;
/** /**
* 工作照片 * 工作照片

View File

@@ -0,0 +1,25 @@
package com.ruoyi.xq.enums.userauth;
import lombok.Getter;
import java.util.Arrays;
@Getter
public enum UserAuthJobAuthTypeEnum {
QW(1,"企业微信"),
OFFER(2,"offer"),
JOB_CARD(3,"工作证"),
;
private final Integer code;
private final String text;
UserAuthJobAuthTypeEnum(Integer code, String text) {
this.code = code;
this.text = text;
}
public static UserAuthJobAuthTypeEnum getByCode(Integer code){
return Arrays.stream(UserAuthJobAuthTypeEnum.values()).filter(i -> i.getCode().equals(code)).findFirst().orElse(null);
}
}

View File

@@ -13,9 +13,9 @@ import java.util.Arrays;
*/ */
@Getter @Getter
public enum UserGenderEnum { public enum UserGenderEnum {
NONE(0,"未知", ""), NONE(0,"未知", "xq/images/avatar/none.png"),
WOMEN(1,"", ""), WOMEN(1,"", "xq/images/avatar/women.png"),
MAN(2,"", ""), MAN(2,"", "xq/images/avatar/man.png"),
; ;

View File

@@ -171,6 +171,7 @@ public class CaiLoginManager {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public User registerUser(String mobile,String inviteCode){ public User registerUser(String mobile,String inviteCode){
String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
String usercode = userCodeGenService.getCodeGen(); String usercode = userCodeGenService.getCodeGen();
User add = new User(); User add = new User();
add.setUsercode(usercode); add.setUsercode(usercode);
@@ -179,6 +180,7 @@ public class CaiLoginManager {
add.setPassword(BCrypt.hashpw(usercode+"用户手动滑稽安康黄鼠狼")); add.setPassword(BCrypt.hashpw(usercode+"用户手动滑稽安康黄鼠狼"));
add.setMobile(mobile); add.setMobile(mobile);
add.setGender(UserGenderEnum.NONE.getCode()); add.setGender(UserGenderEnum.NONE.getCode());
add.setAvatar(cos + UserGenderEnum.NONE.getDefaultAvatar());
add.setImToken(IdUtil.simpleUUID()); add.setImToken(IdUtil.simpleUUID());
userService.save(add); userService.save(add);
CreateUserReq req = new CreateUserReq(); CreateUserReq req = new CreateUserReq();

View File

@@ -1,6 +1,7 @@
package com.ruoyi.xq.manager; package com.ruoyi.xq.manager;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Translation;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.BeanConvertUtil;
@@ -12,8 +13,11 @@ import com.ruoyi.xq.dto.app.user.UpdateUserAuthInfoReq;
import com.ruoyi.xq.dto.app.user.UpdateUserFullInfoReq; import com.ruoyi.xq.dto.app.user.UpdateUserFullInfoReq;
import com.ruoyi.xq.dto.app.user.vo.*; import com.ruoyi.xq.dto.app.user.vo.*;
import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.enums.user.UserAuthTypeEnum; import com.ruoyi.xq.enums.user.UserAuthTypeEnum;
import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum; import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum;
import com.ruoyi.xq.enums.userauth.UserAuthJobAuthTypeEnum;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.lock.LockKey; import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.service.*; import com.ruoyi.xq.service.*;
import com.ruoyi.xq.util.AgeUtil; import com.ruoyi.xq.util.AgeUtil;
@@ -23,7 +27,9 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.swing.plaf.basic.BasicBorders;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -42,6 +48,8 @@ public class CurrentUserManager {
private UserAuthAuditService userAuthAuditService; private UserAuthAuditService userAuthAuditService;
@Autowired @Autowired
private UserInfoAuditService userInfoAuditService; private UserInfoAuditService userInfoAuditService;
@Autowired
private SystemConfigManager systemConfigManager;
public CurrentUserFullInfoVo currentFullInfo(){ public CurrentUserFullInfoVo currentFullInfo(){
@@ -104,6 +112,11 @@ public class CurrentUserManager {
public void updateBaseInfo(UpdateBaseInfoReq req) { public void updateBaseInfo(UpdateBaseInfoReq req) {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
User updateUser = BeanConvertUtil.convertTo(req, User::new); User updateUser = BeanConvertUtil.convertTo(req, User::new);
UserGenderEnum userGenderEnum = UserGenderEnum.getByCode(req.getGender());
if(userGenderEnum != null){
String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
updateUser.setAvatar(cos + userGenderEnum.getDefaultAvatar());
}
updateUser.setId(userId); updateUser.setId(userId);
userService.updateById(updateUser); userService.updateById(updateUser);
UserInfo updateUserInfo = BeanConvertUtil.convertTo(req, UserInfo::new); UserInfo updateUserInfo = BeanConvertUtil.convertTo(req, UserInfo::new);
@@ -217,6 +230,7 @@ public class CurrentUserManager {
return BeanConvertUtil.convertTo(userAuth, UserAuthInfoVo::new); return BeanConvertUtil.convertTo(userAuth, UserAuthInfoVo::new);
} }
@Transactional(rollbackFor = Exception.class)
public void updateInfoAuth(UpdateUserAuthInfoReq req) { public void updateInfoAuth(UpdateUserAuthInfoReq req) {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
User user = userService.getById(userId); User user = userService.getById(userId);
@@ -273,7 +287,8 @@ public class CurrentUserManager {
userAuthAuditService.saveAuthAudit(user,UserAuthTypeEnum.MARRIAGE,req.getMarriagePic()); userAuthAuditService.saveAuthAudit(user,UserAuthTypeEnum.MARRIAGE,req.getMarriagePic());
} }
if(BooleanUtils.isTrue(req.getPushJobAuthBoo())){ // 工作认证 if(BooleanUtils.isTrue(req.getPushJobAuthBoo())){ // 工作认证
if(req.getJobAuthType() == null){ UserAuthJobAuthTypeEnum userAuthJobAuthTypeEnum = UserAuthJobAuthTypeEnum.getByCode(req.getJobAuthType());
if(userAuthJobAuthTypeEnum == null){
throw new ServiceException("请选择工作认证方式"); throw new ServiceException("请选择工作认证方式");
} }
if(req.getJobPic() == null){ if(req.getJobPic() == null){
@@ -286,7 +301,7 @@ public class CurrentUserManager {
if(!update){ if(!update){
throw new ServiceException("房产认证正在审核中,请勿重复提交"); throw new ServiceException("房产认证正在审核中,请勿重复提交");
} }
String authRemark = "工作认证"; String authRemark = String.format("【%s】工作认证", userAuthJobAuthTypeEnum.getText());
userAuthAuditService.saveAuthAudit(user,UserAuthTypeEnum.JOB,req.getJobPic(),authRemark); userAuthAuditService.saveAuthAudit(user,UserAuthTypeEnum.JOB,req.getJobPic(),authRemark);
} }
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.mapper; package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.UserAuthAudit; import com.ruoyi.xq.domain.UserAuthAudit;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAuditAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户认证审核Mapper接口 * 用户认证审核Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.UserAuthAudit;
*/ */
public interface UserAuthAuditMapper extends BaseMapper<UserAuthAudit> { public interface UserAuthAuditMapper extends BaseMapper<UserAuthAudit> {
Page<UserAuthAuditAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserAuthAuditAdminVo bo);
} }

View File

@@ -3,6 +3,7 @@ package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.UserWithdraw; import com.ruoyi.xq.domain.UserWithdraw;
import com.ruoyi.xq.dto.admin.withdraw.UserWithdrawAdminVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -16,4 +17,6 @@ import org.apache.ibatis.annotations.Param;
public interface UserWithdrawMapper extends BaseMapper<UserWithdraw> { public interface UserWithdrawMapper extends BaseMapper<UserWithdraw> {
Page<WithdrawListAppVo> pageApp(@Param("build") Page<Object> build, @Param("query") WithdrawListPageQuery query); Page<WithdrawListAppVo> pageApp(@Param("build") Page<Object> build, @Param("query") WithdrawListPageQuery query);
Page<UserWithdrawAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserWithdrawAdminVo bo);
} }

View File

@@ -1,8 +1,11 @@
package com.ruoyi.xq.service; package com.ruoyi.xq.service;
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.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuthAudit; import com.ruoyi.xq.domain.UserAuthAudit;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAuditAdminVo;
import com.ruoyi.xq.enums.user.UserAuthTypeEnum; import com.ruoyi.xq.enums.user.UserAuthTypeEnum;
/** /**
@@ -17,4 +20,10 @@ public interface UserAuthAuditService extends IService<UserAuthAudit> {
default void saveAuthAudit(User user, UserAuthTypeEnum userAuthType, String pic) { default void saveAuthAudit(User user, UserAuthTypeEnum userAuthType, String pic) {
saveAuthAudit(user,userAuthType,pic, null); saveAuthAudit(user,userAuthType,pic, null);
} }
Page<UserAuthAuditAdminVo> pageAdmin(PageQuery pageQuery, UserAuthAuditAdminVo bo);
void auditSuccess(String ids);
void auditFail(Long id, String auditRemark);
} }

View File

@@ -18,8 +18,11 @@ import java.math.BigDecimal;
public interface UserExtendService extends IService<UserExtend> { public interface UserExtendService extends IService<UserExtend> {
boolean withdraw(Long userId, BigDecimal withdrawPrice); boolean withdraw(Long userId, BigDecimal withdrawPrice);
void resetWithdraw(Long userId, BigDecimal withdrawMoney, String traceId);
Page<UserExtendAdminVo> pageAdmin(PageQuery pageQuery, UserExtendAdminVo bo); Page<UserExtendAdminVo> pageAdmin(PageQuery pageQuery, UserExtendAdminVo bo);
void updateIncomeCoin(UpdateIncomeCoinReq bo); void updateIncomeCoin(UpdateIncomeCoinReq bo);
} }

View File

@@ -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.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserWithdraw; import com.ruoyi.xq.domain.UserWithdraw;
import com.ruoyi.xq.dto.admin.withdraw.UserWithdrawAdminVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery;
@@ -18,4 +19,10 @@ public interface UserWithdrawService extends IService<UserWithdraw> {
void saveWithdraw(Long userId, Long withdrawSettingId); void saveWithdraw(Long userId, Long withdrawSettingId);
Page<WithdrawListAppVo> pageApp(PageQuery pageQuery, WithdrawListPageQuery query); Page<WithdrawListAppVo> pageApp(PageQuery pageQuery, WithdrawListPageQuery query);
Page<UserWithdrawAdminVo> pageAdmin(PageQuery pageQuery, UserWithdrawAdminVo bo);
void auditSuccess(Long id, boolean autoTrans);
void auditFail(Long id, String auditRemark);
} }

View File

@@ -1,27 +1,35 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.common.core.domain.PageQuery;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.domain.UserAuthAudit; import com.ruoyi.xq.domain.UserAuthAudit;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAuditAdminVo;
import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.user.UserAuthTypeEnum; import com.ruoyi.xq.enums.user.UserAuthTypeEnum;
import com.ruoyi.xq.mapper.UserAuthAuditMapper; import com.ruoyi.xq.mapper.UserAuthAuditMapper;
import com.ruoyi.xq.service.UserAuthAuditService; import com.ruoyi.xq.service.UserAuthAuditService;
import com.ruoyi.xq.service.UserAuthService; import com.ruoyi.xq.service.UserAuthService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/** /**
* 用户认证审核Service业务层处理 * 用户认证审核Service业务层处理
* *
* @author 77 * @author 77
* @date 2024-03-04 * @date 2024-03-04
*/ */
@RequiredArgsConstructor
@Service @Service
public class UserAuthAuditServiceImpl extends ServiceImpl<UserAuthAuditMapper,UserAuthAudit> implements UserAuthAuditService { public class UserAuthAuditServiceImpl extends ServiceImpl<UserAuthAuditMapper,UserAuthAudit> implements UserAuthAuditService {
@Autowired
private UserAuthService userAuthService;
@Override @Override
public void saveAuthAudit(User user, UserAuthTypeEnum userAuthType, String pic, String remark) { public void saveAuthAudit(User user, UserAuthTypeEnum userAuthType, String pic, String remark) {
@@ -34,4 +42,107 @@ public class UserAuthAuditServiceImpl extends ServiceImpl<UserAuthAuditMapper,Us
userAuthAudit.setAuditStatus(AuditEnum.AUDITING.getCode()); userAuthAudit.setAuditStatus(AuditEnum.AUDITING.getCode());
this.save(userAuthAudit); this.save(userAuthAudit);
} }
@Override
public Page<UserAuthAuditAdminVo> pageAdmin(PageQuery pageQuery, UserAuthAuditAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
@Override
public void auditSuccess(String ids) {
String[] idArray = ids.split(",");
for (String id : idArray) {
boolean flag = this.update(Wrappers.lambdaUpdate(UserAuthAudit.class)
.eq(UserAuthAudit::getId, id)
.eq(UserAuthAudit::getAuditStatus, AuditEnum.AUDITING.getCode())
.set(UserAuthAudit::getAuditStatus, AuditEnum.SUCCESS.getCode())
.set(UserAuthAudit::getAuditIp, ServletUtils.getClientIP())
.set(UserAuthAudit::getAuditOpId, LoginHelper.getUserId())
.set(UserAuthAudit::getAuditOpName, LoginHelper.getUsername())
.set(UserAuthAudit::getAuditTime, LocalDateTime.now())
.set(UserAuthAudit::getAuditRemark, "审核成功"));
if(flag){
UserAuthAudit userInfoAudit = this.getById(id);
if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.CAR.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getCarAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth::getCarPic, userInfoAudit.getAuthPic()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.JOB.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getJobAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getJobPic, userInfoAudit.getAuthPic())
.set(UserAuth:: getJobAuthType, userInfoAudit.getAuthOther()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.EDUCATION.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getEducationAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getEducationPic, userInfoAudit.getAuthPic()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.HOUSE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getHouseAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getHousePic, userInfoAudit.getAuthPic()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.MARRIAGE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getMarriageAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getMarriagePic, userInfoAudit.getAuthPic()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.SINGLE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getSinglePersonAuth, AuditEnum.SUCCESS.getCode()));
}
}
}
}
@Override
public void auditFail(Long id, String auditRemark) {
boolean update = this.update(Wrappers.lambdaUpdate(UserAuthAudit.class)
.eq(UserAuthAudit::getId, id)
.eq(UserAuthAudit::getAuditStatus, AuditEnum.AUDITING.getCode())
.set(UserAuthAudit::getAuditStatus, AuditEnum.FAIL.getCode())
.set(UserAuthAudit::getAuditIp, ServletUtils.getClientIP())
.set(UserAuthAudit::getAuditOpId, LoginHelper.getUserId())
.set(UserAuthAudit::getAuditOpName, LoginHelper.getUsername())
.set(UserAuthAudit::getAuditTime, LocalDateTime.now())
.set(UserAuthAudit::getAuditRemark, auditRemark));
if(update){
UserAuthAudit userInfoAudit = this.getById(id);
if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.CAR.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getCarAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getCarAuth, AuditEnum.FAIL.getCode()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.JOB.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getJobAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getJobAuth, AuditEnum.FAIL.getCode()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.EDUCATION.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getEducationAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getEducationAuth, AuditEnum.FAIL.getCode()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.HOUSE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getHouseAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getHouseAuth, AuditEnum.FAIL.getCode()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.MARRIAGE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getMarriageAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getMarriageAuth, AuditEnum.FAIL.getCode()));
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.SINGLE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.in(UserAuth::getSinglePersonAuth, AuditEnum.AUDITING.getCode(), AuditEnum.NO.getCode())
.set(UserAuth:: getSinglePersonAuth, AuditEnum.FAIL.getCode()));
}
}
}
} }

View File

@@ -32,8 +32,19 @@ public class UserExtendServiceImpl extends ServiceImpl<UserExtendMapper,UserExte
@Override @Override
public boolean withdraw(Long userId, BigDecimal withdrawPrice){ public boolean withdraw(Long userId, BigDecimal withdrawPrice){
boolean exists = baseMapper.decrIncome(userId, withdrawPrice); boolean success = baseMapper.decrIncome(userId, withdrawPrice);
return exists; if(success){
// TODO 记录金额流水
}
return success;
}
@Override
public void resetWithdraw(Long userId, BigDecimal withdrawMoney, String traceId) {
boolean success = baseMapper.incrIncome(userId, withdrawMoney);
if(success){
// TODO 记录金额流水
}
} }
@Override @Override

View File

@@ -15,7 +15,9 @@ import com.ruoyi.xq.domain.UserInfo;
import com.ruoyi.xq.dto.admin.user.UserAdminVo; import com.ruoyi.xq.dto.admin.user.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq; import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.app.user.vo.HomeUserVo; import com.ruoyi.xq.dto.app.user.vo.HomeUserVo;
import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum; import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.manager.SystemConfigManager;
import com.ruoyi.xq.mapper.UserMapper; import com.ruoyi.xq.mapper.UserMapper;
import com.ruoyi.xq.service.UserInfoService; import com.ruoyi.xq.service.UserInfoService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
@@ -41,6 +43,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
private UserInfoService userInfoService; private UserInfoService userInfoService;
@Autowired @Autowired
private ImUserRefClient userRefClient; private ImUserRefClient userRefClient;
@Autowired
private SystemConfigManager systemConfigManager;
@Override @Override
public User getByUsername(String username) { public User getByUsername(String username) {
@@ -102,17 +106,19 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
if(user == null){ if(user == null){
return; return;
} }
String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
Integer gender = user.getGender(); Integer gender = user.getGender();
UserGenderEnum genderEnum = UserGenderEnum.getByCode(gender); UserGenderEnum genderEnum = UserGenderEnum.getByCode(gender);
if(genderEnum == null){ if(genderEnum == null){
return; return;
} }
String avatar = cos + genderEnum.getDefaultAvatar();
this.update(Wrappers.lambdaUpdate(User.class) this.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId,user.getId()) .eq(User::getId,user.getId())
.set(User::getAvatar,genderEnum.getDefaultAvatar())); .set(User::getAvatar,avatar));
UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); UpdateUinfoReq uinfoReq = new UpdateUinfoReq();
uinfoReq.setAccid(user.getId()+""); uinfoReq.setAccid(user.getId()+"");
uinfoReq.setIcon(genderEnum.getDefaultAvatar()); uinfoReq.setIcon(avatar);
YxCommonR r = userRefClient.updateUinfo(uinfoReq); YxCommonR r = userRefClient.updateUinfo(uinfoReq);
if(!r.isSuccess()){ if(!r.isSuccess()){
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r)); log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));

View File

@@ -1,17 +1,20 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
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.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xq.domain.User; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.xq.domain.UserWithdraw; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.xq.domain.WithdrawSetting; import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.dto.admin.withdraw.UserWithdrawAdminVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo;
import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery;
import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.common.OrderTypeEnum; import com.ruoyi.xq.enums.common.OrderTypeEnum;
import com.ruoyi.xq.enums.common.TraceIdEnum; import com.ruoyi.xq.enums.common.TraceIdEnum;
import com.ruoyi.xq.enums.user.UserAuthTypeEnum;
import com.ruoyi.xq.manager.OrderNoUtil; import com.ruoyi.xq.manager.OrderNoUtil;
import com.ruoyi.xq.manager.TraceIdManager; import com.ruoyi.xq.manager.TraceIdManager;
import com.ruoyi.xq.mapper.UserWithdrawMapper; import com.ruoyi.xq.mapper.UserWithdrawMapper;
@@ -25,6 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 用户提现审核Service业务层处理 * 用户提现审核Service业务层处理
@@ -74,4 +78,44 @@ public class UserWithdrawServiceImpl extends ServiceImpl<UserWithdrawMapper,User
public Page<WithdrawListAppVo> pageApp(PageQuery pageQuery, WithdrawListPageQuery query) { public Page<WithdrawListAppVo> pageApp(PageQuery pageQuery, WithdrawListPageQuery query) {
return baseMapper.pageApp(pageQuery.build(), query); return baseMapper.pageApp(pageQuery.build(), query);
} }
@Override
public Page<UserWithdrawAdminVo> pageAdmin(PageQuery pageQuery, UserWithdrawAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void auditSuccess(Long id, boolean autoTrans) {
boolean flag = this.update(Wrappers.lambdaUpdate(UserWithdraw.class)
.eq(UserWithdraw::getId, id)
.eq(UserWithdraw::getAuditStatus, AuditEnum.AUDITING.getCode())
.set(UserWithdraw::getAuditStatus, AuditEnum.SUCCESS.getCode())
.set(UserWithdraw::getAuditIp, ServletUtils.getClientIP())
.set(UserWithdraw::getAuditOpId, LoginHelper.getUserId())
.set(UserWithdraw::getAuditOpName, LoginHelper.getUsername())
.set(UserWithdraw::getAuditTime, LocalDateTime.now())
.set(UserWithdraw::getAuditRemark, "审核成功"));
if(flag && autoTrans){
// TODO 自动打款
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void auditFail(Long id, String auditRemark) {
boolean update = this.update(Wrappers.lambdaUpdate(UserWithdraw.class)
.eq(UserWithdraw::getId, id)
.eq(UserWithdraw::getAuditStatus, AuditEnum.AUDITING.getCode())
.set(UserWithdraw::getAuditStatus, AuditEnum.FAIL.getCode())
.set(UserWithdraw::getAuditIp, ServletUtils.getClientIP())
.set(UserWithdraw::getAuditOpId, LoginHelper.getUserId())
.set(UserWithdraw::getAuditOpName, LoginHelper.getUsername())
.set(UserWithdraw::getAuditTime, LocalDateTime.now())
.set(UserWithdraw::getAuditRemark, auditRemark));
if(update){
UserWithdraw userWithdraw = this.getById(id);
userExtendService.resetWithdraw(userWithdraw.getUserId(),userWithdraw.getWithdrawMoney(), userWithdraw.getTraceId());
}
}
} }

View File

@@ -4,23 +4,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xq.mapper.UserAuthAuditMapper"> <mapper namespace="com.ruoyi.xq.mapper.UserAuthAuditMapper">
<resultMap type="com.ruoyi.xq.domain.UserAuthAudit" id="UserAuthAuditResult"> <select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.userauth.UserAuthAuditAdminVo">
<result property="id" column="id"/> select t1.*, t2.nickname, t2.mobile,t2.avatar
<result property="userId" column="user_id"/> from xq_user_auth_audit t1
<result property="usercode" column="usercode"/> left join xq_user t2 on t1.user_id = t2.id
<result property="authType" column="auth_type"/> <where>
<result property="authRemark" column="auth_remark"/> <if test="bo.usercode != null and bo.usercode != ''">
<result property="authPic" column="auth_pic"/> and t1.usercode = #{bo.usercode}
<result property="auitOther" column="auit_other"/> </if>
<result property="auditStatus" column="audit_status"/> <if test="bo.nickname != null and bo.nickname != ''">
<result property="auditRemark" column="audit_remark"/> and t2.nickname like concat('%',#{bo.nickname},'%')
<result property="auditTime" column="audit_time"/> </if>
<result property="auditOpId" column="audit_op_id"/> <if test="bo.mobile != null and bo.mobile != ''">
<result property="auditOpName" column="audit_op_name"/> and t2.mobile = #{bo.mobile}
<result property="auditIp" column="audit_ip"/> </if>
<result property="createTime" column="create_time"/> </where>
<result property="updateTime" column="update_time"/> order by t1.create_time desc
</resultMap> </select>
</mapper> </mapper>

View File

@@ -4,27 +4,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xq.mapper.UserWithdrawMapper"> <mapper namespace="com.ruoyi.xq.mapper.UserWithdrawMapper">
<resultMap type="com.ruoyi.xq.domain.UserWithdraw" id="UserWithdrawResult">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="usercode" column="usercode"/>
<result property="traceId" column="trace_id"/>
<result property="orderNo" column="order_no"/>
<result property="withdrawMoney" column="withdraw_money"/>
<result property="realWithdrawMoney" column="real_withdraw_money"/>
<result property="withdrawFees" column="withdraw_fees"/>
<result property="withdrawFeesCate" column="withdraw_fees_cate"/>
<result property="pay" column="pay"/>
<result property="auditStatus" column="audit_status"/>
<result property="auditRemark" column="audit_remark"/>
<result property="auditTime" column="audit_time"/>
<result property="auditOpId" column="audit_op_id"/>
<result property="auditOpName" column="audit_op_name"/>
<result property="auditIp" column="audit_ip"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="deleteFlag" column="delete_flag"/>
</resultMap>
<select id="pageApp" resultType="com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo"> <select id="pageApp" resultType="com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo">
select select
t1.id, t1.user_id, t1.usercode, t1.order_no, t1.id, t1.user_id, t1.usercode, t1.order_no,
@@ -36,6 +15,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and t1.audit_status = #{query.auditStatus} and t1.audit_status = #{query.auditStatus}
</if> </if>
</select> </select>
<select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.withdraw.UserWithdrawAdminVo">
select t1.*, t2.nickname, t2.mobile,t2.avatar
from xq_user_withdraw t1
left join xq_user t2 on t1.user_id = t2.id
<where>
<if test="bo.usercode != null and bo.usercode != ''">
and t1.usercode = #{bo.usercode}
</if>
<if test="bo.nickname != null and bo.nickname != ''">
and t2.nickname like concat('%',#{bo.nickname},'%')
</if>
<if test="bo.mobile != null and bo.mobile != ''">
and t2.mobile = #{bo.mobile}
</if>
</where>
order by create_time desc
</select>
</mapper> </mapper>