| | |
| | | public interface BalanceChangeRecordMapper extends BaseMapper<BalanceChangeRecord> { |
| | | IPage<BalanceChangeRecord> pageList(@Param("page") Page<BalanceChangeRecord> page,@Param("agentQuery") BalanceQuery agentQuery); |
| | | |
| | | |
| | | List<BalanceChangeRecord> selectBalanceChangeRecordList(@Param("changeRecord") BalanceChangeRecord balanceChangeRecord); |
| | | |
| | | IPage<BalanceChangeRecord> queryCommissionStatistics(@Param("page") Page<BalanceChangeRecord> page, |
| | | @Param("changeRecord") BalanceChangeRecord changeRecord); |
| | | |
| | | List<UserPoint> findLatestChangeByType(BalanceChangeRecord balanceChangeRecord); |
| | | } |
| | |
| | | import com.ruoyi.account.service.BalanceChangeRecordService; |
| | | import com.ruoyi.account.vo.CommissionStatistics; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.other.api.domain.ShopPoint; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | |
| | | |
| | | @Override |
| | | public CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) { |
| | | List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord); |
| | | BigDecimal totalCommission = balanceChangeRecordList.stream() |
| | | .filter(item -> !(item.getChangeType().equals(2) && item.getChangeType().equals(5))) |
| | | .map(BalanceChangeRecord::getChangeAmount) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add) |
| | | .setScale(2, RoundingMode.HALF_UP); |
| | | |
| | | IPage<BalanceChangeRecord> balanceChangeRecordIPage = this.baseMapper.queryCommissionStatistics(page, balanceChangeRecord); |
| | | // return new CommissionStatistics(totalCommission, changeRecordPage); |
| | | return null; |
| | | return new CommissionStatistics(totalCommission, balanceChangeRecordIPage); |
| | | } |
| | | } |
| | |
| | | |
| | | public CommissionStatistics() { |
| | | } |
| | | public CommissionStatistics(BigDecimal totalCommission, Page<BalanceChangeRecord> changeRecordPage) { |
| | | public CommissionStatistics(BigDecimal totalCommission, IPage<BalanceChangeRecord> changeRecordPage) { |
| | | this.totalCommission = totalCommission; |
| | | this.userPointPage = changeRecordPage; |
| | | } |
| | |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="queryCommissionStatistics" resultType="com.ruoyi.account.api.model.BalanceChangeRecord"> |
| | | |
| | | <sql id="balanceChangeRecordList"> |
| | | SELECT |
| | | tcr.*, |
| | | tau.`name` userName, |
| | | tau.phone userPhone |
| | | tau.phone userPhone, |
| | | tbcr.change_type, |
| | | tbcr.create_time, |
| | | tbcr.change_amount |
| | | FROM |
| | | t_balance_change_record tcr |
| | | LEFT JOIN t_app_user tau ON tcr.app_user_id = tau.id |
| | | t_balance_change_record tbcr |
| | | LEFT JOIN t_app_user tau ON tbcr.app_user_id = tau.id |
| | | <where> |
| | | <if test="changeRecord.userName != null and changeRecord.userName != ''"> |
| | | and tau.name like concat('%',#{changeRecord.userName},'%') |
| | |
| | | <if test="changeRecord.userPhone != null and changeRecord.userPhone != ''"> |
| | | and tau.phone like concat('%',#{changeRecord.userPhone},'%') |
| | | </if> |
| | | <if test="changeRecord.changeType != null"> |
| | | and tcr.change_type = #{changeRecord.changeType} |
| | | </if> |
| | | <if test="changeRecord.startTime != null and changeRecord.endTime != null"> |
| | | and DATE(tcr.create_time) between #{changeRecord.startTime} and #{changeRecord.endTime} |
| | | and DATE(tbcr.create_time) between #{changeRecord.startTime} and #{changeRecord.endTime} |
| | | </if> |
| | | </where> |
| | | </sql> |
| | | |
| | | <select id="selectBalanceChangeRecordList" resultType="com.ruoyi.account.api.model.BalanceChangeRecord"> |
| | | <include refid="balanceChangeRecordList"/> |
| | | </select> |
| | | <select id="findLatestChangeByType" resultType="com.ruoyi.account.api.model.UserPoint"> |
| | | SELECT |
| | | id, |
| | | app_user_id, |
| | | order_id, |
| | | change_type, |
| | | before_amount, |
| | | change_amount, |
| | | after_amount, |
| | | del_flag, |
| | | create_time |
| | | FROM |
| | | ( |
| | | SELECT |
| | | id, |
| | | app_user_id, |
| | | order_id, |
| | | change_type, |
| | | before_amount, |
| | | change_amount, |
| | | after_amount, |
| | | del_flag, |
| | | create_time, |
| | | ROW_NUMBER() OVER ( PARTITION BY change_type, app_user_id ORDER BY create_time DESC ) rn |
| | | FROM |
| | | t_balance_change_record |
| | | <where> |
| | | <if test="changeRecord.userName != null and changeRecord.userName != ''"> |
| | | and tau.name like concat('%',#{changeRecord.userName},'%') |
| | | </if> |
| | | <if test="changeRecord.userPhone != null and changeRecord.userPhone != ''"> |
| | | and tau.phone like concat('%',#{changeRecord.userPhone},'%') |
| | | </if> |
| | | <if test="changeRecord.changeType != null"> |
| | | and tcr.change_type = #{changeRecord.changeType} |
| | | </if> |
| | | <if test="changeRecord.startTime != null and changeRecord.endTime != null"> |
| | | and DATE(tcr.create_time) between #{changeRecord.startTime} and #{changeRecord.endTime} |
| | | </if> |
| | | </where> |
| | | ) AS subquery |
| | | WHERE |
| | | rn = 1 |
| | | <select id="queryCommissionStatistics" resultType="com.ruoyi.account.api.model.BalanceChangeRecord"> |
| | | <include refid="balanceChangeRecordList"/> |
| | | </select> |
| | | </mapper> |
| | |
| | | |
| | | <sql id="ShopPointList"> |
| | | SELECT |
| | | ts.`name`, |
| | | ts.shop_manager, |
| | | ts.`name` shopName, |
| | | ts.shop_manager shopLeaderName, |
| | | ts.phone, |
| | | tsp.type, |
| | | tsp.create_time, |