ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/AppUserController.java
@@ -3,11 +3,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.pojo.dto.AppUserPageDTO; import com.ruoyi.system.pojo.dto.UpdateBalanceDTO; import com.ruoyi.system.pojo.vo.AppUserPageVO; import com.ruoyi.system.pojo.vo.AppUserVO; import com.ruoyi.system.pojo.vo.BannerPageVO; import com.ruoyi.system.service.AppUserService; import com.ruoyi.system.service.BannerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -37,9 +40,31 @@ /** * 查看详情 */ @GetMapping("/detail/{id}") @ApiOperation(value = "查看详情") @PreAuthorize("@ss.hasPermi('appuser:manage')") public R<AppUserVO> detail(@PathVariable("id") String id){ return R.ok(appUserService.detail(id)); } /** * 冻结/解冻 */ @PutMapping("/frozen/{id}") @ApiOperation(value = "冻结/解冻") @PreAuthorize("@ss.hasPermi('appuser:manage')") public R<Void> frozen(@PathVariable("id") String id){ appUserService.frozen(id); return R.ok(); } /** * 变更余额 */ @PutMapping("/balance") @ApiOperation(value = "修改余额") @PreAuthorize("@ss.hasPermi('appuser:manage')") public R<Void> balance(@RequestBody UpdateBalanceDTO dto){ appUserService.balance(dto); return R.ok(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -255,19 +255,19 @@ /** * 获取部门树列表 */ /* @PreAuthorize("@ss.hasPermi('system:user:list')") @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/deptTree") public AjaxResult deptTree(SysDept dept) { return success(deptService.selectDeptTreeList(dept)); }*/ } /** * 分页 */ @ApiOperation(value = "账号管理-获取账号分页列表", tags = "系统后台-权限管理") @PreAuthorize("@ss.hasPermi('permission:account')") @GetMapping("/list") @GetMapping("/page/list") public R<IPage<SysUserPageListVO>> getSysUserPageList(@RequestParam("pageNum")Integer pageNum, @RequestParam("pageSize")Integer pageSize, @RequestParam("nickName")String nickName, ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,10 +111,9 @@ .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 requests.antMatchers("/login", "/register", "/captchaImage").permitAll() requests.antMatchers("/system/login", "/register", "/captchaImage").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/system/banner/**","/system/config/**","/system/systemConfig/**").permitAll()//先放行所有的 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated(); ruoyi-system/src/main/java/com/ruoyi/system/domain/AccountDetail.java
@@ -48,4 +48,8 @@ @TableField("money") @ApiModelProperty(value = "金额") private BigDecimal money; @TableField("remark") @ApiModelProperty(value = "备注") private String remark; } ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java
New file @@ -0,0 +1,74 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @TableName("tb_order") public class Order { @TableId(value = "id", type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键ID") private String id; @TableField(value = "company_id") @ApiModelProperty(value = "购买公司的用户id") private String companyId; @TableField(value = "status") @ApiModelProperty(value = "订单状态:-1取消 2待确认 3已确认 4办理中 5卖家已完成 6买家完成") private Integer status; @TableField(value = "user_id") @ApiModelProperty(value = "购买人id") private String userId; @TableField(value = "price") @ApiModelProperty(value = "购买价格") private BigDecimal price; @TableField(value = "order_no") @ApiModelProperty(value = "订单编号") private String orderNo; @TableField(value = "create_time") @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @TableField(value = "out_trade_no") @ApiModelProperty(value = "商户单号") private String outTradeNo; @TableField(value = "confirm_time") @ApiModelProperty(value = "确认时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime confirmTime; @TableField(value = "pay_time") @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime payTime; @TableField(value = "share_user_id") @ApiModelProperty(value = "需要分佣的userid") private String shareUserId; @TableField(value = "commission_price") @ApiModelProperty(value = "分佣金额") private BigDecimal commissionPrice; @TableField(value = "commission_platform") @ApiModelProperty(value = "平台分佣金额") private BigDecimal commissionPlatform; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/AccountDetailMapper.java
New file @@ -0,0 +1,10 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.AccountDetail; import com.ruoyi.system.domain.Agreement; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AccountDetailMapper extends BaseMapper<AccountDetail> { } ruoyi-system/src/main/java/com/ruoyi/system/mapper/AppUserMapper.java
@@ -6,11 +6,19 @@ import com.ruoyi.system.domain.User; import com.ruoyi.system.pojo.dto.AppUserPageDTO; import com.ruoyi.system.pojo.vo.AppUserPageVO; import com.ruoyi.system.pojo.vo.AppUserVO; import com.ruoyi.system.pojo.vo.InviteUser; import com.ruoyi.system.pojo.vo.SysDeptPageVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface AppUserMapper extends BaseMapper<User> { IPage<AppUserPageVO> getAppUserPage(@Param("page") IPage<SysDeptPageVO> iPage, @Param("dto") AppUserPageDTO dto); AppUserVO getDetailInfoById(@Param("id")String id); List<InviteUser> getInviteUserListByInviteId(@Param("id")String id); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/CompanyMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.Company; import com.ruoyi.system.domain.Order; import com.ruoyi.system.pojo.model.BuyerInfoAndOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface CompanyMapper extends BaseMapper<Company> { List<BuyerInfoAndOrder> getProcessingOrdersByUserId(@Param("id") String id); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java
New file @@ -0,0 +1,14 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.Order; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @Mapper public interface OrderMapper extends BaseMapper<Order> { BigDecimal getProcessingCommissionPriceByShareUserId(@Param("id") String id); } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/UpdateBalanceDTO.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.system.pojo.dto; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; import java.math.BigDecimal; @Data @ApiModel("修改余额DTO") public class UpdateBalanceDTO { @ApiModelProperty(value = "主键ID") private String id; @ApiModelProperty(value = "类型:1+ 2-") @NotNull(message = "类型不能为空") @Max(value = 2, message = "类型选择范围在1-2") @Min(value = 1, message = "类型选择范围在1-2") private Integer type; @ApiModelProperty(value = "金额") @NotNull(message = "金额不能为空") @DecimalMin(value = "0.0", inclusive = false, message = "金额必须大于0") private BigDecimal money; @ApiModelProperty(value = "备注") @NotEmpty(message = "变更原因不能为空") private String remark; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/model/BuyerInfoAndOrder.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.system.pojo.model; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class BuyerInfoAndOrder { @TableField(value = "price") @ApiModelProperty(value = "购买价格") private BigDecimal price; @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime payTime; @ApiModelProperty(value = "分佣金额") private BigDecimal commissionPrice; @ApiModelProperty(value = "平台分佣金额") private BigDecimal commissionPlatform; @ApiModelProperty(value = "新增天数") private Integer addDay; @ApiModelProperty(value = "预估天数") private Integer estimatedDays; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/vo/AppUserVO.java
New file @@ -0,0 +1,68 @@ package com.ruoyi.system.pojo.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Data @ApiModel("appUser详情VO") public class AppUserVO { @ApiModelProperty("用户id") private String id; @ApiModelProperty(value = "用户名称") private String userName; @ApiModelProperty(value = "绑定手机号") private String phone; @ApiModelProperty(value = "注册时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @ApiModelProperty(value = "账户余额(默认0.00)") private BigDecimal balance; @ApiModelProperty(value = "已提现金额") private BigDecimal withdraw; @ApiModelProperty(value = "待审核金额") private BigDecimal audit; @ApiModelProperty(value = "待入账金额") private BigDecimal recorded; @ApiModelProperty(value = "发布次数") private Integer publishNum; @ApiModelProperty(value = "购买次数") private Integer buyNum; @ApiModelProperty(value = "购买总金额") private BigDecimal buyTotalMoney; @ApiModelProperty(value = "发布完成次数") private Integer publishFinishNum; @ApiModelProperty(value = "购买订单完成次数") private Integer buyFinishNum; @ApiModelProperty("绑定用户") private String bindUserName; @ApiModelProperty(value = "剩余分佣次数") private Integer inviteNum; @ApiModelProperty(value = "下级") private List<InviteUser> inviteUserList; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/vo/InviteUser.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.system.pojo.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel("下级用户") public class InviteUser { @ApiModelProperty(value = "主键ID") private String userId; @ApiModelProperty(value = "用户名称") private String userName; @ApiModelProperty(value = "剩余提成次数") private Integer inviteNum; @ApiModelProperty(value = "已分佣金额") private BigDecimal commissionMoney; } ruoyi-system/src/main/java/com/ruoyi/system/service/AppUserService.java
@@ -6,9 +6,17 @@ import com.ruoyi.system.domain.User; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.AppUserPageDTO; import com.ruoyi.system.pojo.dto.UpdateBalanceDTO; import com.ruoyi.system.pojo.vo.AppUserPageVO; import com.ruoyi.system.pojo.vo.AppUserVO; public interface AppUserService extends IService<User> { IPage<AppUserPageVO> getAppUserPage(AppUserPageDTO getAppUserPage); AppUserVO detail(String id); void frozen(String id); void balance(UpdateBalanceDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AppUserServiceImpl.java
@@ -4,28 +4,136 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.User; import com.ruoyi.system.mapper.AgreementMapper; import com.ruoyi.system.mapper.AppUserMapper; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.domain.*; import com.ruoyi.system.mapper.*; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.AppUserPageDTO; import com.ruoyi.system.pojo.dto.UpdateBalanceDTO; import com.ruoyi.system.pojo.model.BuyerInfoAndOrder; import com.ruoyi.system.pojo.vo.AppUserPageVO; import com.ruoyi.system.pojo.vo.AppUserVO; import com.ruoyi.system.pojo.vo.InviteUser; import com.ruoyi.system.pojo.vo.SysDeptPageVO; import com.ruoyi.system.service.AgreementService; import com.ruoyi.system.service.AppUserService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.List; import java.util.stream.Collectors; import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; @Service public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> implements AppUserService { @Resource private OrderMapper orderMapper; @Resource private CompanyMapper companyMapper; @Resource private AccountDetailMapper accountDetailMapper; @Override public IPage<AppUserPageVO> getAppUserPage(AppUserPageDTO dto) { IPage<SysDeptPageVO> iPage = new Page<>(dto.getPageNum(), dto.getPageSize()); return this.baseMapper.getAppUserPage(iPage,dto); } @Override public AppUserVO detail(String id) { //1.基础信息 AppUserVO vo=this.baseMapper.getDetailInfoById(id); //2.计算待入账金额 BigDecimal recorded=new BigDecimal("0.00"); //2.1查询待处理中的订单 List<BuyerInfoAndOrder> orders=companyMapper.getProcessingOrdersByUserId(id); //2.2计算订单金额 扣减超时订单金额 for(BuyerInfoAndOrder order :orders) { BigDecimal total = new BigDecimal("0.00"); total = total.add(order.getPrice()).subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform()); System.out.println(total); //扣减超时订单 //到期时间 支付时间 + 预计时间 + 新增时间 LocalDateTime end = order.getPayTime().plusDays(order.getEstimatedDays()).plusDays(order.getAddDay()); LocalDateTime now = LocalDateTime.now();//计算扣费时间 if (!now.isAfter(end)) { recorded = recorded.add(total); break; } // 计算两个时间点的差值(精确到秒) long seconds = ChronoUnit.SECONDS.between(end, now); // 向上取整:超过时间不满24小时按一天计算 long days= (seconds + 86399) / 86400;//24小时 //计算天数差 BigDecimal dailyAmount = new BigDecimal("100.00"); total = total.subtract((dailyAmount.multiply(BigDecimal.valueOf(days)))); recorded = recorded.add(total); } //2.3查询待处理中的分佣订单 BigDecimal commissionPrice = orderMapper.getProcessingCommissionPriceByShareUserId(id); //2.4累计 recorded = recorded.add(commissionPrice); vo.setRecorded(recorded); //3.下级用户 List<InviteUser> list = this.baseMapper.getInviteUserListByInviteId(id); vo.setInviteUserList(list); return vo; } @Override public void frozen(String id) { //查看用户是否存在 User user = this.baseMapper.selectById(id); if (null == user|| user.getIsDelete() != 0|| user.getStatus() == 3) { throw new ServiceException("用户不存在"); } user.setStatus(user.getStatus()==1?2:1); user.setUpdateTime(LocalDateTime.now()); LoginUser loginUser = getLoginUser(); user.setUpdateBy(loginUser.getUserId()); this.baseMapper.updateById(user); } @Transactional @Override public void balance(UpdateBalanceDTO dto) { User user = this.baseMapper.selectById(dto.getId()); if (null == user|| user.getIsDelete() != 0|| user.getStatus() == 3) { throw new ServiceException("用户不存在"); } //添加明细表 AccountDetail accountDetail = new AccountDetail(); accountDetail.setUserId(dto.getId()); accountDetail.setType(dto.getType()); accountDetail.setMoney(dto.getMoney()); accountDetail.setRemark(dto.getRemark()); accountDetailMapper.insert(accountDetail); //修改用户余额 if (dto.getType()==1){ //加余额 user.setBalance(user.getBalance().add(accountDetail.getMoney())); }else { //减余额 user.setBalance(user.getBalance().subtract(accountDetail.getMoney())); } user.setUpdateTime(LocalDateTime.now()); user.setUpdateBy(getLoginUser().getUserId()); this.baseMapper.updateById(user); //todo 是否需要加消息 } } ruoyi-system/src/main/resources/mapper/system/AccountDetailMapper.xml
New file @@ -0,0 +1,6 @@ <?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.system.mapper.AccountDetailMapper"> </mapper> ruoyi-system/src/main/resources/mapper/system/AppUserMapper.xml
@@ -9,13 +9,86 @@ tbu.user_name, tbu.phone, tbu.create_time, tbu.balance, ifnull(tbu.balance,0.00) as balance, tbu.status, ifnull(bingding.num , 0) as bingDingUser, ifnull(buy.num , 0) as buyNum, ifnull(sell.num , 0) as sellNum from tb_user tbu LEFT JOIN tb_user u2 ON u1.id = u2.invite_id LEFT JOIN (select u.id,count(iu.id) as num from tb_user u LEFT JOIN tb_user iu ON u.id = iu.invite_id group by u.id) bingding ON tbu.id = bingding.id left join (select user_id, count(1) as num from tb_order where status = 6 group by user_id) buy on tbu.id=buy.user_id left join (select c.user_id,count(o.company_id) as num from tb_company c left join tb_order o on c.id=o.company_id and o.status=6 group by c.user_id) sell on tbu.id = sell.user_id where tbu.is_delete =0 <if test="null != dto.username and dto.username != '' "> and tbu.user_name like concat('%',#{dto.username},'%') </if> <if test="null != dto.phone and dto.phone != '' "> and tbu.phone like concat('%',#{dto.phone},'%') </if> <if test="null != dto.startTime and null != dto.endTime"> and tbu.create_time between #{dto.startTime} and #{dto.endTime} </if> <if test="null != dto.status"> and tbu.status =#{dto.status} </if> </select> <select id="getDetailInfoById" resultType="com.ruoyi.system.pojo.vo.AppUserVO"> select tbu.user_name as userName, tbu.phone as phone, tbu.create_time as createTime, ifnull(tbu.balance,0.00) as balance, IFNULL(tbu.invite_num, 0) AS inviteNum, invite.user_name as bindUserName, IFNULL(money.audit, 0) AS audit, IFNULL(money.withdraw, 0) AS withdraw, IFNULL(publised.publish_num, 0) AS publishNum, IFNULL(publised.publish_finish_num, 0) AS publishFinishNum, IFNULL(buy.buy_num, 0) AS buyNum, IFNULL(buy.buy_total_money, 0) AS buyTotalMoney, IFNULL(buy.buy_finish_num, 0) AS buyFinishNum from tb_user tbu left join tb_user invite on invite.id = tbu.invite_id left join (SELECT user_id, SUM(CASE WHEN status = 0 THEN money ELSE 0 END) AS audit, -- 待审核金额 SUM(CASE WHEN status = 1 THEN money ELSE 0 END) AS withdraw -- 已提现金额 FROM tb_withdrawal WHERE status IN (0, 1) group by user_id ) money on tbu.id = money.user_id left join (select user_id, COUNT(*) AS publish_num,-- 发布次数 SUM(CASE WHEN status = 3 THEN 1 ELSE 0 END) AS publish_finish_num -- 发布完成次数 from tb_company GROUP BY user_id ) publised ON tbu.id = publised.user_id left join (select user_id, count(*) as buy_num,-- 购买次数 sum( price )as buy_total_money,-- 购买总金额 SUM(case when status=6 THEN 1 ELSE 0 end) as buy_finish_num -- 购买订单完成次数 from tb_order GROUP BY user_id ) buy ON tbu.id = buy.user_id WHERE tbu.id = #{id} </select> <select id="getInviteUserListByInviteId" resultType="com.ruoyi.system.pojo.vo.InviteUser"> SELECT tbu.id AS user_id, tbu.user_name, tbu.invite_num, COALESCE(commission.total_commission, 0) AS commission_money FROM tb_user tbu LEFT JOIN (SELECT share_user_id, user_id AS order_user_id, -- 订单关联的用户ID(即被邀请用户) SUM(commission_price) AS total_commission FROM tb_order WHERE status = 6 -- 已完成 AND share_user_id = #{id} GROUP BY share_user_id, user_id -- 按分佣用户和订单关联用户分组 ) commission ON tbu.id = commission.order_user_id -- 关联被邀请用户ID WHERE tbu.status != 3 -- 未注销 AND tbu.is_delete = 0 -- 未删除 AND tbu.invite_id = #{id}; </select> </mapper> ruoyi-system/src/main/resources/mapper/system/CompanyMapper.xml
New file @@ -0,0 +1,28 @@ <?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.system.mapper.CompanyMapper"> <select id="getProcessingOrdersByUserId" resultType="com.ruoyi.system.pojo.model.BuyerInfoAndOrder"> SELECT c.estimated_days, -- 公司预估天数 tbo.price, -- 订单价格 tbo.pay_time, -- 支付时间 tbo.commission_price, -- 用户分佣金额 tbo.commission_platform, -- 平台分佣金额 tinfo.add_day -- 额外添加天数 FROM tb_company c LEFT JOIN tb_order tbo ON c.id = tbo.company_id AND tbo.status IN (4, 5) -- 仅关联状态为4或5的订单 LEFT JOIN tb_buyer_company_info tinfo ON tbo.id = tinfo.order_id WHERE c.is_delete = 0 -- 公司未被删除 AND c.user_id = #{id}; -- 指定用户的公司 </select> </mapper> ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml
New file @@ -0,0 +1,9 @@ <?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.system.mapper.OrderMapper"> <select id="getProcessingCommissionPriceByShareUserId" resultType="java.math.BigDecimal"> select COALESCE(SUM(commission_price), 0.00) AS total_commission from tb_order where status in (4,5) and share_user_id =#{id} </select> </mapper>