This commit is contained in:
张良(004796)
2024-03-13 15:45:03 +08:00
parent e79d7d8c5c
commit 01c813137b
12 changed files with 118 additions and 43 deletions

View File

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.UserExtend; import com.ruoyi.xq.domain.UserExtend;
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo; import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
import com.ruoyi.xq.service.UserExtendService; import com.ruoyi.xq.service.UserExtendService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -59,38 +60,13 @@ public class UserExtendController extends BaseController {
return R.ok(userExtendService.getById(id)); return R.ok(userExtendService.getById(id));
} }
/**
* 新增用户邀请
*/
@SaCheckPermission("xq:userExtend:add")
@Log(title = "用户邀请", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserExtend bo) {
return toAjax(userExtendService.save(bo));
}
/**
* 修改用户邀请
*/
@SaCheckPermission("xq:userExtend:edit") @SaCheckPermission("xq:userExtend:edit")
@Log(title = "用户邀请", businessType = BusinessType.UPDATE) @Log(title = "调整用户收益", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PostMapping("/updateIncomeCoin")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserExtend bo) { public R<Void> updateIncomeCoin(@RequestBody UpdateIncomeCoinReq bo) {
return toAjax(userExtendService.updateById(bo)); userExtendService.updateIncomeCoin(bo);
return R.ok();
} }
/**
* 删除用户邀请
*
* @param ids 主键串
*/
@SaCheckPermission("xq:userExtend:remove")
@Log(title = "用户邀请", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(userExtendService.removeBatchByIds(Arrays.asList(ids)));
}
} }

View File

@@ -13,6 +13,7 @@ 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.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import com.ruoyi.xq.service.UserInviteService; import com.ruoyi.xq.service.UserInviteService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -41,8 +42,8 @@ public class UserInviteController extends BaseController {
*/ */
@SaCheckPermission("xq:userInvite:list") @SaCheckPermission("xq:userInvite:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<UserInvite> list(UserInvite bo, PageQuery pageQuery) { public TableDataInfo<UserInviteAdminVo> list(UserInviteAdminVo bo, PageQuery pageQuery) {
Page<UserInvite> page = userInviteService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<UserInviteAdminVo> page = userInviteService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }

View File

@@ -0,0 +1,15 @@
package com.ruoyi.xq.dto.admin.user;
import com.ruoyi.xq.domain.UserInvite;
import lombok.Data;
@Data
public class UserInviteAdminVo extends UserInvite {
private String avatar;
private String nickname;
private String mobile;
private String inviteMobile;
private String inviteAvatar;
private String inviteNickname;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.xq.dto.admin.user.req;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class UpdateIncomeCoinReq {
private String usercode;
private String remark;
/**
* 调整的金额
*/
private BigDecimal rechargeCoin;
}

View File

@@ -18,5 +18,7 @@ public interface UserExtendMapper extends BaseMapper<UserExtend> {
boolean decrIncome(@Param("userId") Long userId, @Param("price") BigDecimal price); boolean decrIncome(@Param("userId") Long userId, @Param("price") BigDecimal price);
boolean incrIncome(@Param("userId") Long userId, @Param("price") BigDecimal price);
Page<UserExtendAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserExtendAdminVo bo); Page<UserExtendAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserExtendAdminVo bo);
} }

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.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户邀请Mapper接口 * 用户邀请Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.UserInvite;
*/ */
public interface UserInviteMapper extends BaseMapper<UserInvite> { public interface UserInviteMapper extends BaseMapper<UserInvite> {
Page<UserInviteAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserInviteAdminVo bo);
} }

View File

@@ -5,6 +5,7 @@ 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.UserExtend; import com.ruoyi.xq.domain.UserExtend;
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo; import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -19,4 +20,6 @@ public interface UserExtendService extends IService<UserExtend> {
boolean withdraw(Long userId, BigDecimal withdrawPrice); boolean withdraw(Long userId, BigDecimal withdrawPrice);
Page<UserExtendAdminVo> pageAdmin(PageQuery pageQuery, UserExtendAdminVo bo); Page<UserExtendAdminVo> pageAdmin(PageQuery pageQuery, UserExtendAdminVo bo);
void updateIncomeCoin(UpdateIncomeCoinReq bo);
} }

View File

@@ -1,7 +1,10 @@
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.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
/** /**
* 用户邀请Service接口 * 用户邀请Service接口
@@ -14,4 +17,6 @@ public interface UserInviteService extends IService<UserInvite> {
void bindInvite(Long userId, String inviteCode); void bindInvite(Long userId, String inviteCode);
void unBindInviteUser(Long userId); void unBindInviteUser(Long userId);
Page<UserInviteAdminVo> pageAdmin(PageQuery pageQuery, UserInviteAdminVo bo);
} }

View File

@@ -3,12 +3,18 @@ package com.ruoyi.xq.service.impl;
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.xq.domain.User;
import com.ruoyi.xq.domain.UserExtend; import com.ruoyi.xq.domain.UserExtend;
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo; import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
import com.ruoyi.xq.mapper.UserExtendMapper; import com.ruoyi.xq.mapper.UserExtendMapper;
import com.ruoyi.xq.service.UserExtendService; import com.ruoyi.xq.service.UserExtendService;
import com.ruoyi.xq.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -21,7 +27,8 @@ import java.math.BigDecimal;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class UserExtendServiceImpl extends ServiceImpl<UserExtendMapper,UserExtend> implements UserExtendService { public class UserExtendServiceImpl extends ServiceImpl<UserExtendMapper,UserExtend> implements UserExtendService {
@Autowired
private UserService userService;
@Override @Override
public boolean withdraw(Long userId, BigDecimal withdrawPrice){ public boolean withdraw(Long userId, BigDecimal withdrawPrice){
@@ -34,4 +41,17 @@ public class UserExtendServiceImpl extends ServiceImpl<UserExtendMapper,UserExte
return baseMapper.pageAdmin(pageQuery.build(), bo); return baseMapper.pageAdmin(pageQuery.build(), bo);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void updateIncomeCoin(UpdateIncomeCoinReq bo) {
User user = userService.getByUsercode(bo.getUsercode());
if(user == null){
throw new ServiceException("用户不存在");
}
boolean income = baseMapper.incrIncome(user.getId(), bo.getRechargeCoin());
if(!income){
throw new ServiceException("调整失败,请保证调整后金额不为负数");
}
}
} }

View File

@@ -1,10 +1,13 @@
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.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import com.ruoyi.xq.mapper.UserInviteMapper; import com.ruoyi.xq.mapper.UserInviteMapper;
import com.ruoyi.xq.service.UserInviteService; import com.ruoyi.xq.service.UserInviteService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
@@ -65,4 +68,9 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
.eq(User::getId, userId) .eq(User::getId, userId)
.set(User::getInviteId, null)); .set(User::getInviteId, null));
} }
@Override
public Page<UserInviteAdminVo> pageAdmin(PageQuery pageQuery, UserInviteAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
} }

View File

@@ -9,6 +9,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
set income_coin = income_coin - #{price} set income_coin = income_coin - #{price}
where income_coin - #{price} > 0 and user_id = #{userId} where income_coin - #{price} > 0 and user_id = #{userId}
</update> </update>
<update id="incrIncome">
update xq_user_extend
set income_coin = income_coin + #{price}
where income_coin + #{price} > 0 and user_id = #{userId}
</update>
<select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.user.UserExtendAdminVo"> <select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.user.UserExtendAdminVo">
select t1.*, t2.nickname,t2.mobile,t2.avatar select t1.*, t2.nickname,t2.mobile,t2.avatar
from xq_user_extend t1 from xq_user_extend t1

View File

@@ -4,16 +4,36 @@ 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.UserInviteMapper"> <mapper namespace="com.ruoyi.xq.mapper.UserInviteMapper">
<resultMap type="com.ruoyi.xq.domain.UserInvite" id="UserInviteResult"> <select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.user.UserInviteAdminVo">
<result property="id" column="id"/> select
<result property="userId" column="user_id"/> t1.*,
<result property="usercode" column="usercode"/> t2.nickname, t2.mobile, t2.avatar,
<result property="inviteId" column="invite_id"/> t3.nickname as invite_nickname, t3.mobile as invite_mobile, t3.avatar as invite_avatar
<result property="inviteCode" column="invite_code"/> from xq_user_invite t1
<result property="cashbackTotal" column="cashback_total"/> left join xq_user t2 on t1.user_id = t2.id
<result property="createTime" column="create_time"/> left join xq_user t3 on t1.invite_id = t3.id
<result property="updateTime" column="update_time"/> <where>
</resultMap> <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>
<if test="bo.inviteCode != null and bo.inviteCode != ''">
and t1.usercode = #{bo.inviteCode}
</if>
<if test="bo.inviteNickname != null and bo.inviteNickname != ''">
and t3.nickname like concat('%',#{bo.inviteNickname},'%')
</if>
<if test="bo.inviteMobile != null and bo.inviteMobile != ''">
and t3.mobile = #{bo.inviteMobile}
</if>
</where>
order by t1.create_time
</select>
</mapper> </mapper>