| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import java.util.Date; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | import com.panzhihua.common.model.dtos.community.integral.admin.AddComActIntegralUserDTO; |
| | | import com.panzhihua.common.model.dtos.community.integral.admin.PageComActIntegralTradeDTO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.integral.ComActIntegralUserRuleVO; |
| | | import com.panzhihua.common.model.vos.community.integral.admin.ComActIntegralUserTradeAdminVO; |
| | | import com.panzhihua.common.model.vos.community.integral.admin.IntegralUserVO; |
| | | import com.panzhihua.common.utlis.DateUtils; |
| | |
| | | import com.panzhihua.service_community.dao.ComActQuestnaireDAO; |
| | | import com.panzhihua.service_community.model.dos.*; |
| | | import com.panzhihua.service_community.service.*; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * @auther lyq |
| | |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ComActIntegralUserTradeServiceImpl extends ServiceImpl<ComActIntegralUserTradeMapper, ComActIntegralUserTradeDO> implements ComActIntegralUserTradeService { |
| | | public class ComActIntegralUserTradeServiceImpl extends |
| | | ServiceImpl<ComActIntegralUserTradeMapper, ComActIntegralUserTradeDO> implements ComActIntegralUserTradeService { |
| | | |
| | | @Resource |
| | | private ComActIntegralRuleService comActIntegralRuleService; |
| | |
| | | |
| | | /** |
| | | * 查询用户某个时间段交易数量 |
| | | * @param integralCountDTO 请求参数 |
| | | * |
| | | * @param integralCountDTO |
| | | * 请求参数 |
| | | * @return 交易数量 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 添加用户积分交易记录 |
| | | * @param userId 用户id |
| | | * @param integralId 积分账户id |
| | | * @param communityId 社区id |
| | | * @param serviceId 交易业务id |
| | | * @param serviceType 交易业务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷) |
| | | * @param amount 交易积分数量 |
| | | * @param changeType 变动类型(1.增加 2.减少) |
| | | * @param remark 交易备注 |
| | | * @param identityType 交易身份类型(1.居民 2.党员 3.志愿者) |
| | | * @param createBy 操作人id |
| | | * |
| | | * @param userId |
| | | * 用户id |
| | | * @param integralId |
| | | * 积分账户id |
| | | * @param communityId |
| | | * 社区id |
| | | * @param serviceId |
| | | * 交易业务id |
| | | * @param serviceType |
| | | * 交易业务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷) |
| | | * @param amount |
| | | * 交易积分数量 |
| | | * @param changeType |
| | | * 变动类型(1.增加 2.减少) |
| | | * @param remark |
| | | * 交易备注 |
| | | * @param identityType |
| | | * 交易身份类型(1.居民 2.党员 3.志愿者) |
| | | * @param createBy |
| | | * 操作人id |
| | | */ |
| | | @Override |
| | | public Long addIntegralTradeRecord(Long userId,Long integralId,Long communityId,Long serviceId |
| | | ,Integer serviceType,Integer amount,Integer changeType,String remark,Integer identityType,Long createBy){ |
| | | public Long addIntegralTradeRecord(Long userId, Long integralId, Long communityId, Long serviceId, |
| | | Integer serviceType, Integer amount, Integer changeType, String remark, Integer identityType, Long createBy) { |
| | | ComActIntegralUserTradeDO integralUserTradeDO = new ComActIntegralUserTradeDO(); |
| | | integralUserTradeDO.setId(Snowflake.getId()); |
| | | integralUserTradeDO.setUserId(userId); |
| | |
| | | |
| | | /** |
| | | * 小程序-查询用户社区积分明细 |
| | | * @param communityTradeDTO 请求参数 |
| | | * |
| | | * @param communityTradeDTO |
| | | * 请求参数 |
| | | * @return 用户社区积分明细 |
| | | */ |
| | | @Override |
| | |
| | | }else if(communityTradeDTO.getType().equals(ComActIntegralCommunityRankDTO.type.volunteer)){ |
| | | communityTradeDTO.setIdentityType(ComActIntegralCommunityRankDTO.identityType.volunteer); |
| | | } |
| | | return R.ok(this.baseMapper.getIntegralCommunityTradeApplets(new Page(communityTradeDTO.getPageNum(),communityTradeDTO.getPageSize()),communityTradeDTO)); |
| | | return R.ok(this.baseMapper.getIntegralCommunityTradeApplets( |
| | | new Page(communityTradeDTO.getPageNum(), communityTradeDTO.getPageSize()), communityTradeDTO)); |
| | | } |
| | | |
| | | /** |
| | | * 社区后台-分页查询社区下积分明细记录 |
| | | * @param integralRuleDTO 请求参数 |
| | | * |
| | | * @param integralRuleDTO |
| | | * 请求参数 |
| | | * @return 社区下积分明细记录 |
| | | */ |
| | | @Override |
| | | public R getIntegralTradeListAdmin(PageComActIntegralTradeDTO integralRuleDTO){ |
| | | IPage<ComActIntegralUserTradeAdminVO> userTradeAdminIPage = this.baseMapper.getIntegralTradeListAdmin(new Page(integralRuleDTO.getPageNum(),integralRuleDTO.getPageSize()),integralRuleDTO); |
| | | IPage<ComActIntegralUserTradeAdminVO> userTradeAdminIPage = this.baseMapper.getIntegralTradeListAdmin( |
| | | new Page(integralRuleDTO.getPageNum(), integralRuleDTO.getPageSize()), integralRuleDTO); |
| | | if(!userTradeAdminIPage.getRecords().isEmpty()){ |
| | | userTradeAdminIPage.getRecords().forEach(userTrade -> { |
| | | StringBuilder sb = new StringBuilder(); |
| | |
| | | |
| | | /** |
| | | * 给用户添加积分 |
| | | * @param integralUserDTO 请求参数 |
| | | * |
| | | * @param integralUserDTO |
| | | * 请求参数 |
| | | * @return 添加积分结果 |
| | | */ |
| | | @Override |
| | |
| | | Date nowDate = new Date(); |
| | | |
| | | //查询随手拍增加积分数量 |
| | | ComActIntegralRuleDO integralRuleDO = comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda() |
| | | .eq(ComActIntegralRuleDO::getIntegralType,type) |
| | | .eq(ComActIntegralRuleDO::getCommunityId,communityId)); |
| | | ComActIntegralRuleDO integralRuleDO = |
| | | comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda() |
| | | .eq(ComActIntegralRuleDO::getIntegralType, type).eq(ComActIntegralRuleDO::getCommunityId, communityId)); |
| | | if(integralRuleDO == null){ |
| | | log.error("未查询到该社区积分规则,社区id:" + communityId); |
| | | return R.fail("未查询到该社区积分规则,社区id:" + communityId); |
| | | } |
| | | //判断规则是否有次数限制 |
| | | if(integralRuleDO.getIsRestrict().equals(ComActIntegralRuleDO.isRestrict.yes)){ |
| | | Integer count = this.baseMapper.getIntegralCount(getIntegralCountDTO(integralRuleDO.getType(),userId,communityId,integralRuleDO.getIntegralType())); |
| | | Integer count = this.baseMapper.getIntegralCount( |
| | | getIntegralCountDTO(integralRuleDO.getType(), userId, communityId, integralRuleDO.getIntegralType())); |
| | | if(count >= integralRuleDO.getCount()){ |
| | | log.error("该用户参加任务次数已达上限"); |
| | | return R.fail("该用户参加任务次数已达上限"); |
| | |
| | | } |
| | | |
| | | //查询用户积分账户 |
| | | ComActIntegralUserDO integralUserDO = comActIntegralUserService.getOne(new QueryWrapper<ComActIntegralUserDO>().lambda() |
| | | ComActIntegralUserDO integralUserDO = |
| | | comActIntegralUserService.getOne(new QueryWrapper<ComActIntegralUserDO>().lambda() |
| | | .eq(ComActIntegralUserDO::getUserId,userId).eq(ComActIntegralUserDO::getCommunityId,communityId)); |
| | | if(integralUserDO == null){ |
| | | integralUserDO = new ComActIntegralUserDO(); |
| | |
| | | //更新钱包 |
| | | comActIntegralUserService.updateById(integralUserDO); |
| | | //增加积分账户交易记录 |
| | | Long tradeId = this.addIntegralTradeRecord(userId,integralId,communityId,serviceId,type,amount |
| | | ,ComActIntegralUserTradeDO.changeType.add,remark.toString(),identityType,2L); |
| | | Long tradeId = this.addIntegralTradeRecord(userId, integralId, communityId, serviceId, type, amount, |
| | | ComActIntegralUserTradeDO.changeType.add, remark.toString(), identityType, 2L); |
| | | //增加积分账户变更记录 |
| | | comActIntegralUserChangeService.addIntegralUserChangeRecord(userId,integralId,communityId,integralSum,integralUserDO.getIntegralSum() |
| | | ,integralAvailableSum,integralUserDO.getIntegralAvailableSum(),integralFrozenSum,integralUserDO.getIntegralFrozenSum() |
| | | ,integralParty,integralUserDO.getIntegralParty(),integralAvailableParty,integralUserDO.getIntegralAvailableParty() |
| | | ,integralFrozenParty,integralUserDO.getIntegralFrozenParty(),integralVolunteer,integralUserDO.getIntegralVolunteer() |
| | | ,integralAvailableVolunteer,integralUserDO.getIntegralAvailableVolunteer(),integralFrozenVolunteer,integralUserDO.getIntegralFrozenVolunteer() |
| | | ,integralResident,integralUserDO.getIntegralResident(),integralAvailableResident,integralUserDO.getIntegralAvailableResident() |
| | | ,integralFrozenResident,integralUserDO.getIntegralFrozenResident(),tradeId); |
| | | comActIntegralUserChangeService.addIntegralUserChangeRecord(userId, integralId, communityId, integralSum, |
| | | integralUserDO.getIntegralSum(), integralAvailableSum, integralUserDO.getIntegralAvailableSum(), |
| | | integralFrozenSum, integralUserDO.getIntegralFrozenSum(), integralParty, integralUserDO.getIntegralParty(), |
| | | integralAvailableParty, integralUserDO.getIntegralAvailableParty(), integralFrozenParty, |
| | | integralUserDO.getIntegralFrozenParty(), integralVolunteer, integralUserDO.getIntegralVolunteer(), |
| | | integralAvailableVolunteer, integralUserDO.getIntegralAvailableVolunteer(), integralFrozenVolunteer, |
| | | integralUserDO.getIntegralFrozenVolunteer(), integralResident, integralUserDO.getIntegralResident(), |
| | | integralAvailableResident, integralUserDO.getIntegralAvailableResident(), integralFrozenResident, |
| | | integralUserDO.getIntegralFrozenResident(), tradeId); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 根据类型、用户id、社区id构建查询请求参数 |
| | | * @param type 类型 |
| | | * @param userId 用户id |
| | | * @param communityId 社区id |
| | | * |
| | | * @param type |
| | | * 类型 |
| | | * @param userId |
| | | * 用户id |
| | | * @param communityId |
| | | * 社区id |
| | | * @return 查询请求参数 |
| | | */ |
| | | private ComActIntegralCountDTO getIntegralCountDTO(Integer type,Long userId,Long communityId,Integer integralType){ |
| | | private ComActIntegralCountDTO getIntegralCountDTO(Integer type, Long userId, Long communityId, |
| | | Integer integralType) { |
| | | ComActIntegralCountDTO integralCountDTO = new ComActIntegralCountDTO(); |
| | | integralCountDTO.setUserId(userId); |
| | | integralCountDTO.setCommunityId(communityId); |