Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
9bc69f1234
13 changed files with 104 additions and 6 deletions
  1. 33
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountAssociateOrderRecord.java
  2. 7
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java
  3. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  4. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountAssociateOrderRecordDao.java
  5. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/OrderViewDao.java
  6. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java
  7. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java
  8. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java
  9. 0
      dating-agency-mall-server/src/main/resources/mapper/activity/WalletAccountAssociateOrderRecordDao.xml
  10. 20
      dating-agency-mall-server/src/main/resources/mapper/order/WalletAccountAssociateOrderRecordDao.xml
  11. 0
      dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml
  12. 0
      dating-agency-mall-server/src/main/resources/mapper/rewardconfig/WalletAccountAssociateOrderRecordDao.xml
  13. 0
      dating-agency-mall-server/src/main/resources/mapper/right/WalletAccountAssociateOrderRecordDao.xml

33
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountAssociateOrderRecord.java

@ -0,0 +1,33 @@
package com.qniao.dam.domain.aggregate.walletaccount.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_wallet_account_associate_order_record")
public class WalletAccountAssociateOrderRecord extends ValueObject<WalletAccountAssociateOrderRecord> {
@ApiModelProperty("钱包记录标识")
private Long walletAccountRecordId;
@ApiModelProperty("有关联的订单")
private Long associateOrderId;
@ApiModelProperty("有关联的金额")
private BigDecimal associateOrderAmount;
public static WalletAccountAssociateOrderRecord build(Long associateOrder,
BigDecimal associateOrderAmount) {
WalletAccountAssociateOrderRecord associateOrderRecord = new WalletAccountAssociateOrderRecord();
associateOrderRecord.setAssociateOrderId(associateOrder);
associateOrderRecord.setAssociateOrderAmount(associateOrderAmount);
return associateOrderRecord;
}
}

7
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java

@ -8,6 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ -26,12 +27,18 @@ public class WalletAccountRecord extends ValueObject<WalletAccountRecord> {
@ApiModelProperty("是否收入")
private Boolean isIncome;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("备注")
private String remark;
private List<WalletAccountAssociateOrderRecord> associateOrderRecordList;
public static WalletAccountRecord build(TradeTypeEnum tradeType,
BigDecimal tradeAmount,
Boolean isIncome,
String content,
String remark) {
WalletAccountRecord record = new WalletAccountRecord();
record.setTradeType(tradeType);

14
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -2,13 +2,17 @@ package com.qniao.dam.application.service.reward;
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto;
import com.qniao.dam.api.query.walletaccount.WalletAccountQueryService;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountAssociateOrderRecord;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import org.springframework.stereotype.Service;
@ -25,6 +29,8 @@ public class RewardApplicationService {
private WalletAccountQueryService walletAccountQueryService;
@Resource
private WalletAccountAggregate walletAccountAggregate;
@Resource
private OrderQueryService orderQueryService;
/**
* todo 财务入账
@ -34,13 +40,19 @@ public class RewardApplicationService {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND);
if (Objects.nonNull(rewardConfig) && RewardAmountUnitEnum.NUM.equals(rewardConfig.getRewardAmountUnit())) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId());
Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE);
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getInitiatorUserId());
}
String content = "推荐红娘" + (Objects.nonNull(associateOrder) ? associateOrder.getOrderBelongName() : "") + "入驻平台";
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardConfig.getRewardAmount()));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE,
rewardConfig.getRewardAmount(), true, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc());
rewardConfig.getRewardAmount(), true, content, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc());
if (Objects.nonNull(associateOrder)) {
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
record.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
}
walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountAssociateOrderRecordDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountAssociateOrderRecord;
public interface WalletAccountAssociateOrderRecordDao extends BaseMapper<WalletAccountAssociateOrderRecord> {
}

4
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/OrderViewDao.java

@ -7,6 +7,8 @@ import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorV
import com.qniao.dam.api.query.order.user.response.UserOrderRecordVo;
import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo;
import com.qniao.dam.api.query.order.user.response.UserPageOrderItemByOperatorVo;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -22,4 +24,6 @@ public interface OrderViewDao {
GetOrderStatisticsByOperatorVo getOrderStatisticsByOperator(@Param("queryParam") UserPageOrderByOperatorQueryParam queryParam);
IPage<UserOrderRecordVo> userUserOrderRecord(Page<Object> pageWithoutOrders,@Param("miId") Long miId,@Param("userId") Long userId);
Order queryBySubCategory(@Param("userId") Long userId, @Param("subCategory") ProductSubCategoryEnum subCategory);
}

14
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.repository.WalletAccountRepository;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountAssociateOrderRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountRecordDao;
import org.springframework.stereotype.Service;
@ -19,13 +20,12 @@ public class WalletAccountRepositoryImpl implements WalletAccountRepository {
private WalletAccountDao walletAccountDao;
@Resource
private WalletAccountRecordDao walletAccountRecordDao;
@Resource
private WalletAccountAssociateOrderRecordDao walletAccountAssociateOrderRecordDao;
@Override
public WalletAccount load(Long id) {
WalletAccount walletAccount = walletAccountDao.selectById(id);
walletAccount.setRecordList(walletAccountRecordDao.selectList(new LambdaQueryWrapper<WalletAccountRecord>()
.eq(WalletAccountRecord::getWalletAccountId, id)));
return walletAccount;
return walletAccountDao.selectById(id);
}
@Override
@ -39,6 +39,12 @@ public class WalletAccountRepositoryImpl implements WalletAccountRepository {
entity.getRecordList().forEach(record -> {
record.setWalletAccountId(entity.getId());
walletAccountRecordDao.insert(record);
if (CollUtil.isNotEmpty(record.getAssociateOrderRecordList())) {
record.getAssociateOrderRecordList().forEach(associateOrderRecord -> {
associateOrderRecord.setWalletAccountRecordId(record.getId());
walletAccountAssociateOrderRecordDao.insert(associateOrderRecord);
});
}
});
}
return entity.getId();

3
dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java

@ -8,6 +8,7 @@ import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dau.infrastructure.constant.RequestHeaderFields;
import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
@ -22,4 +23,6 @@ public interface OrderQueryService {
boolean checkDiffSpecRight(Order order, OrderItem orderItem, ProductSpec productSpec);
QnPage<UserOrderRecordVo> userUserOrderRecord(PageUtil pageUtil,Long miId,Long userId);
Order queryBySubCategory(Long userId,ProductSubCategoryEnum subCategory);
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java

@ -14,6 +14,7 @@ import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecReposito
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domain.aggregate.right.entity.Right;
import com.qniao.dam.domain.aggregate.right.entity.RightTerm;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum;
import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum;
@ -79,6 +80,11 @@ public class OrderQueryServiceImpl implements OrderQueryService {
@Override
public QnPage<UserOrderRecordVo> userUserOrderRecord(PageUtil pageUtil, Long miId, Long userId) {
return PageUtil.convert(orderViewDao.userUserOrderRecord(pageUtil.toPageWithoutOrders(),miId,userId));
return PageUtil.convert(orderViewDao.userUserOrderRecord(pageUtil.toPageWithoutOrders(), miId, userId));
}
@Override
public Order queryBySubCategory(Long userId, ProductSubCategoryEnum subCategory) {
return orderViewDao.queryBySubCategory(userId, subCategory);
}
}

dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml → dating-agency-mall-server/src/main/resources/mapper/activity/WalletAccountAssociateOrderRecordDao.xml

dating-agency-mall-server/src/main/resources/mapper/order/OrderViewMapper.xml → dating-agency-mall-server/src/main/resources/mapper/order/WalletAccountAssociateOrderRecordDao.xml

@ -91,4 +91,24 @@
ORDER BY paid_time DESC
</select>
<select id="queryBySubCategory" resultType="com.qniao.dam.domain.aggregate.order.entity.Order">
select
dao.id,
dao.mi_id,
dao.order_belonging,
dao.order_belong_name,
dao.order_type,
dao.order_code,
dao.settlement_amount,
dao.paid_time,
dao.`status`
from da_order as dao
LEFT JOIN da_order_item as daoi on daoi.is_delete=0 and daoi.order_id=dao.id
where dao.is_delete=0 and dao.`status`=5
and dao.user_id=#{userId}
and daoi.sub_category=#{subCategory}
GROUP BY dao.id
ORDER BY dao.create_time desc
</select>
</mapper>

dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml → dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml

dating-agency-mall-server/src/main/resources/mapper/rewardconfig/RewardConfigViewMapper.xml → dating-agency-mall-server/src/main/resources/mapper/rewardconfig/WalletAccountAssociateOrderRecordDao.xml

dating-agency-mall-server/src/main/resources/mapper/right/RightMapper.xml → dating-agency-mall-server/src/main/resources/mapper/right/WalletAccountAssociateOrderRecordDao.xml

Loading…
Cancel
Save