diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/UserMakerQuotaController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/UserMakerQuotaController.java new file mode 100644 index 0000000..0a03ccc --- /dev/null +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/UserMakerQuotaController.java @@ -0,0 +1,46 @@ +package cn.pluss.platform.controller; + +import cn.pluss.platform.UserMakerQuota.UserMakerQuotaService; +import cn.pluss.platform.api.Result; +import cn.pluss.platform.api.ResultGenerator; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Map; + +/** + * @author lyf + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/userMakerQuota") +public class UserMakerQuotaController { + @Resource + private UserMakerQuotaService userMakerQuotaService; + + /** + * 汇总数据 + * @return + */ + @GetMapping("/quota") + public Result quota() { + Map quota = userMakerQuotaService.quota(); + return ResultGenerator.genSuccessResult(quota); + } + + /** + * 额度明细 + * @param page + * @param size + * @return + */ + @GetMapping("/quotaInfo") + public Result quotaList(Integer page, Integer size, Integer type){ + return ResultGenerator.genSuccessResult(userMakerQuotaService.quotaList(page,size,type)); + } + +} diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/interceptor/TokenRegistryInterceptor.java b/pluss-api-page/src/main/java/cn/pluss/platform/interceptor/TokenRegistryInterceptor.java index ce89ab8..64b093a 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/interceptor/TokenRegistryInterceptor.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/interceptor/TokenRegistryInterceptor.java @@ -69,7 +69,7 @@ public class TokenRegistryInterceptor extends HandlerInterceptorAdapter { limitUri.add("/api/systemConfig/updateSystemVersion"); limitUri.add("/api/lkl/querySubMerInfo"); limitUri.add("/api/lkl/lklCallBack"); - limitUri.add("/api/lkl/lklModfiyCallBack"); + limitUri.add("/api/auditCallback/lklModfiyCallBack"); limitUri.add("/api/lkl/lklCallBackVoiceBox"); limitUri.add("/api/lkl/queryMerchantChannelStatus"); limitUri.add("/api/auditCallback/tradeCallBack"); diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserAccountFlowMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserAccountFlowMapper.java index 1ddff45..09639f5 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserAccountFlowMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserAccountFlowMapper.java @@ -1,9 +1,20 @@ package cn.pluss.platform.mapper; import cn.pluss.platform.entity.UserAccountFlow; +import cn.pluss.platform.entity.UserMakerFlow; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.util.List; + +/** + * @author lyf + */ @Mapper -public interface UserAccountFlowMapper extends BaseMapper { +public interface UserAccountFlowMapper extends BaseMapper { + + @Select("SELECT * FROM tb_pluss_user_account_flow WHERE user_id = #{userId} AND biz_code = 'SD' order by id desc limit #{pageSize} offset #{offset} ") + List selectByUserIdType(@Param("userId") Long userId,@Param("pageSize") Integer pageSize,@Param("offset") Integer offset); } diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserInfoMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserInfoMapper.java index e0a512e..7005744 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserInfoMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserInfoMapper.java @@ -19,6 +19,7 @@ public interface UserInfoMapper extends BaseMapper { */ UserInfo selectMainUserInfo(Long id); + /** * @description:取主商户和子商户信息 * @date: 2021/9/23 15:43 diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java new file mode 100644 index 0000000..f24cefc --- /dev/null +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java @@ -0,0 +1,17 @@ +package cn.pluss.platform.mapper; + +import cn.pluss.platform.entity.UserMakerFlow; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author lyf + */ +public interface UserMakerFlowMapper extends BaseMapper { + + @Select(value = "SELECT id,user_id AS userId ,biz_code AS bizCode ,biz_name AS bizName ,amount,balance,create_time AS createTime ,remark FROM tb_pluss_user_maker_flow WHERE user_id = #{userId} order by id desc limit #{pageSize} offset #{offset} ") + List selectByUserId(@Param("userId") Long userId,@Param("pageSize") Integer pageSize,@Param("offset") Integer offset); +} diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerQuotaMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerQuotaMapper.java new file mode 100644 index 0000000..5874ce4 --- /dev/null +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerQuotaMapper.java @@ -0,0 +1,23 @@ +package cn.pluss.platform.mapper; + +import cn.pluss.platform.entity.UserIntegral; +import cn.pluss.platform.entity.UserMakerQuota; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.math.BigDecimal; + +/** + * @author lyf + */ +public interface UserMakerQuotaMapper extends BaseMapper { + BigDecimal sumQuota(@Param("userId") Long userId); + @Update(value = "update tb_pluss_user_account set amount=amount+#{amount} where userId=#{userId}") + Integer updateMakerFreeze(@Param("userId") Integer userId, @Param("amount") BigDecimal amount); + + @Select(value ="SELECT * FROM tb_pluss_user_maker_quota WHERE userId = #{userId}") + UserMakerQuota selectByUserId(@Param("userId") Long userId); + +} diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserPromotionMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserPromotionMapper.java index 3589855..25af300 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserPromotionMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserPromotionMapper.java @@ -34,6 +34,7 @@ public interface UserPromotionMapper extends BaseMapper { UserPromotion selectByUserId(@Param("userId") String userId); UserPromotion selectByPrimaryKey(Long userId); + UserPromotion selectByUserIdMC(Long userId); @Select("select max(current_fee) from tb_pluss_user_promotion where parent_user_id=#{id}") BigDecimal selectMaxFeeByUserId(@Param("id")String id); @Select(" select *\n" + diff --git a/pluss-dao-bundle/src/main/resources/mapper/UserMakerQuotaMapper.xml b/pluss-dao-bundle/src/main/resources/mapper/UserMakerQuotaMapper.xml new file mode 100644 index 0000000..edbf6c7 --- /dev/null +++ b/pluss-dao-bundle/src/main/resources/mapper/UserMakerQuotaMapper.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/pluss-dao-bundle/src/main/resources/mapper/UserPromotionMapper.xml b/pluss-dao-bundle/src/main/resources/mapper/UserPromotionMapper.xml index f953bdc..4ae9ca2 100644 --- a/pluss-dao-bundle/src/main/resources/mapper/UserPromotionMapper.xml +++ b/pluss-dao-bundle/src/main/resources/mapper/UserPromotionMapper.xml @@ -37,4 +37,15 @@ from tb_pluss_user_promotion where user_id = #{userId} + + + diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantProfit.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantProfit.java index a621194..ebdf096 100644 --- a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantProfit.java +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/MerchantProfit.java @@ -39,6 +39,9 @@ public class MerchantProfit { @TableId(value = "id", type = IdType.AUTO) private Long id; private Long userId; + /** + *类型 1 直推收入 2间推收入 3二级间推收入 4 升级收益 5 推广分润(多代理分润收入),6:V2.0分润模式 7: 缴费通8:音箱分润 + */ private String type; private Double price; private String orderNumber; diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccount.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccount.java index 4ced968..082c2f1 100644 --- a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccount.java +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccount.java @@ -1,5 +1,6 @@ package cn.pluss.platform.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -18,16 +19,16 @@ public class UserAccount implements Serializable { - @TableId + @TableField("user_id") private Integer userId; - + @TableField("freeze_balance") private BigDecimal freezeBalance; private BigDecimal balance; - + @TableField("out_balance") private BigDecimal outBalance; - + @TableField("create_time") private Date createTime; - + @TableField("update_time") private Date updateTime; } diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccountFlow.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccountFlow.java index b432934..c39db1b 100644 --- a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccountFlow.java +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserAccountFlow.java @@ -1,6 +1,7 @@ package cn.pluss.platform.entity; 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 lombok.Data; @@ -27,6 +28,8 @@ public class UserAccountFlow implements Serializable { private String bizName; private BigDecimal amount; + @TableField("order_amount") + private BigDecimal orderAmount; private BigDecimal balance; diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerFlow.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerFlow.java new file mode 100644 index 0000000..d4c11e0 --- /dev/null +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerFlow.java @@ -0,0 +1,42 @@ +package cn.pluss.platform.entity; + + +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 lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author lyf + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_pluss_user_maker_flow") +public class UserMakerFlow implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + @TableField("user_id") + private Integer userId; + @TableField("biz_code") + private String bizCode; + @TableField("biz_name") + private String bizName; + @TableField("amount") + private BigDecimal amount; + @TableField("balance") + private BigDecimal balance; + @TableField("remark") + private String remark; + @TableField("create_time") + private Date createTime; + @TableField("update_time") + private Date updateTime; +} diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerQuota.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerQuota.java new file mode 100644 index 0000000..46c9978 --- /dev/null +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/UserMakerQuota.java @@ -0,0 +1,29 @@ +package cn.pluss.platform.entity; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author lyf + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_pluss_user_maker_quota") +public class UserMakerQuota { + @TableField("id") + private Integer id; + @TableField("userId") + private Long userId; + @TableField("amount") + private BigDecimal amount; + @TableField("createTime") + private Date createTime; +} diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/UserMakerQuotaVO.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/UserMakerQuotaVO.java new file mode 100644 index 0000000..e13b676 --- /dev/null +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/vo/UserMakerQuotaVO.java @@ -0,0 +1,23 @@ +package cn.pluss.platform.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author lyf + */ +@Data +public class UserMakerQuotaVO { + private Integer id; + + private String userName; + + private BigDecimal amount; + + private BigDecimal lowerAmount; + + private Date createTime; +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java new file mode 100644 index 0000000..43e6ef7 --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java @@ -0,0 +1,22 @@ +package cn.pluss.platform.UserMakerQuota; + +import cn.pluss.platform.entity.MerchantOrder; +import cn.pluss.platform.entity.UserMakerQuota; +import cn.pluss.platform.vo.UserMakerQuotaVO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @author lyf + */ +public interface UserMakerQuotaService extends IService { + + Map quota(); + + void quotaInfo(MerchantOrder order); + + List quotaList(Integer page, Integer size,Integer type); +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java new file mode 100644 index 0000000..7e189fa --- /dev/null +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java @@ -0,0 +1,232 @@ +package cn.pluss.platform.UserMakerQuota.impl; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.pluss.platform.UserMakerQuota.UserMakerQuotaService; +import cn.pluss.platform.entity.*; +import cn.pluss.platform.exception.MsgException; +import cn.pluss.platform.mapper.*; +import cn.pluss.platform.merchant.MerchantBaseInfoService; +import cn.pluss.platform.userAccount.UserAccountService; +import cn.pluss.platform.userApp.UserAppService; +import cn.pluss.platform.util.N; +import cn.pluss.platform.vo.UserMakerQuotaVO; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.swagger.models.auth.In; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.util.*; + +/** + * @author lyf + */ +@Service +public class UserMakerQuotaServiceImpl extends ServiceImpl implements UserMakerQuotaService { + @Resource + private UserMakerQuotaMapper userMakerQuotaMapper; + @Resource + private UserAppService userAppService; + @Resource + private UserAccountService userAccountService; + @Resource + private UserPromotionMapper userPromotionMapper; + @Resource + private MerchantBaseInfoService merchantBaseInfoService; + @Resource + private UserMakerFlowMapper userMakerFlowMapper; + @Resource + private UserAccountFlowMapper userAccountFlowMapper; + + @Override + public Map quota() { + UserApp userApp = userAppService.queryUserAppByToken(); + BigDecimal bigDecimal = userMakerQuotaMapper.sumQuota(userApp.getUserId()); + UserAccount userAccountByUserId = userAccountService.getUserAccountByUserId(userApp.getUserId()); + + HashMap map = new HashMap<>(16); + map.put("freeQuota",bigDecimal == null? + new BigDecimal("0.00") : bigDecimal); + map.put("returnFree",userAccountByUserId == null || userAccountByUserId.getBalance() == null? + new BigDecimal("0.00") : userAccountByUserId.getBalance()); + return map; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void quotaInfo(MerchantOrder order) { + BigDecimal consumeFee = new BigDecimal(String.valueOf(order.getConsumeFee())); + //商户码转userId + if (consumeFee.compareTo(new BigDecimal("0.01"))>0) { + MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode()); + //找到上级增加额度 + UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId())); + if (userInfo != null) { + UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId())); + if (userParent != null && "1".equals(userParent.getIsExtend())){ + BigDecimal profit = consumeFee.multiply(new BigDecimal("0.0038")).setScale(2,BigDecimal.ROUND_DOWN); + String s = String.valueOf(userParent.getUserId()); + Integer integer = Integer.valueOf(s); + this.modMakerFunds(integer,"SD","免费额度",profit,""); + } + } + //自己如果是创客的话 + assert userInfo != null; + if ("1".equals(userInfo.getIsExtend())){ + profit(userInfo,consumeFee); + } + } + } + + @Override + public List quotaList(Integer page, Integer size, Integer type) { + Integer pageSize = size; + Integer offset = (page-1)*size; + UserApp userApp = userAppService.queryUserAppByToken(); + MerchantBaseInfo merchantBaseInfoByUserId = merchantBaseInfoService.getMerchantBaseInfoByUserId(String.valueOf(userApp.getUserId())); + switch (type) { + //额度明细 + case 1: + List userMakerFlowsList = userMakerFlowMapper.selectByUserId(userApp.getUserId(), pageSize, offset); + List vos = new ArrayList<>(); + for (UserMakerFlow userMakerFlow : userMakerFlowsList) { + UserMakerQuotaVO userMakerQuotaVO = new UserMakerQuotaVO(); + userMakerQuotaVO.setUserName(merchantBaseInfoByUserId == null?"下级商户":merchantBaseInfoByUserId.getAlias()); + userMakerQuotaVO.setAmount(userMakerFlow.getAmount()); + userMakerQuotaVO.setCreateTime(userMakerFlow.getCreateTime()); + if (userMakerFlow.getAmount().compareTo(new BigDecimal(BigInteger.ZERO))>0) { + userMakerQuotaVO.setLowerAmount(userMakerFlow.getAmount().multiply(new BigDecimal("2")).setScale(2, RoundingMode.DOWN)); + }else { + userMakerQuotaVO.setLowerAmount(userMakerFlow.getAmount()); + } + vos.add(userMakerQuotaVO); + } + return vos; + //返现明细 + case 2: + List userAccountFlowsList = userAccountFlowMapper.selectByUserIdType(userApp.getUserId(),pageSize, offset); + List userAccountVos = new ArrayList<>(); + for (UserAccountFlow userAccountFlow : userAccountFlowsList) { + UserMakerQuotaVO userMakerQuotaVO = new UserMakerQuotaVO(); + userMakerQuotaVO.setUserName(merchantBaseInfoByUserId == null?"下级商户":merchantBaseInfoByUserId.getAlias()); + userMakerQuotaVO.setAmount(userAccountFlow.getAmount()); + userMakerQuotaVO.setCreateTime(userAccountFlow.getCreateTime()); + userMakerQuotaVO.setLowerAmount(userAccountFlow.getOrderAmount()); + userAccountVos.add(userMakerQuotaVO); + } + return userAccountVos; + } + return new ArrayList(); + } + + //增加额度 + private void makerQuota(MerchantOrder order){ + BigDecimal consumeFee = new BigDecimal(String.valueOf(order.getConsumeFee())); + //商户码转userId + if (consumeFee.compareTo(new BigDecimal("0.01"))>0) { + MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode()); + UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId())); + if (userInfo != null && "1".equals(userInfo.getIsExtend())){ + BigDecimal profit = consumeFee.multiply(new BigDecimal("0.0038")).setScale(2, RoundingMode.DOWN); + String s = String.valueOf(userInfo.getUserId()); + Integer integer = Integer.valueOf(s); + this.modMakerFunds(integer,"SD","免费额度",profit,""); + } + if (userInfo != null) { + UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId())); + if (userParent != null) { + UserMakerQuota userMakerQuota = new UserMakerQuota(); + userMakerQuota.setUserId(userParent.getUserId()); + userMakerQuota.setAmount(consumeFee.divide(new BigDecimal("2"),2,BigDecimal.ROUND_DOWN)); + userMakerQuota.setCreateTime(new Date()); + userMakerQuotaMapper.insert(userMakerQuota); + } + } + } + } + //增加提现金额 + private void profit(UserPromotion userInfo,BigDecimal consumeFee){ + UserMakerQuota userMakerQuota = userMakerQuotaMapper.selectByUserId(userInfo.getUserId()); + BigDecimal sumbigDecimal = userMakerQuota.getAmount(); + if (sumbigDecimal !=null && sumbigDecimal.compareTo(consumeFee)>=0){ + BigDecimal profit = consumeFee.multiply(new BigDecimal("0.0038")).setScale(2,BigDecimal.ROUND_DOWN); + sumbigDecimal = sumbigDecimal.subtract(consumeFee); + String s = String.valueOf(userInfo.getUserId()); + Integer integer = Integer.valueOf(s); + //提现金额 + userAccountService.modFunds(integer,"SD","免提现额度",profit,""); + //额度改变 + this.modMakerFunds(integer,"SD","免费额度",sumbigDecimal,""); + }else { + BigDecimal profit = sumbigDecimal.multiply(new BigDecimal("0.0038")).setScale(2, BigDecimal.ROUND_DOWN); + String s = String.valueOf(userInfo.getUserId()); + Integer integer = Integer.valueOf(s); + //提现金额 + userAccountService.modFunds(integer,"SD","免提现额度",profit,""); + //额度改变 + this.modMakerFunds(integer,"SD","免费额度",BigDecimal.ZERO,""); + } + + } + + /** + * 创客额度相关 + * @param userId + * @param bizCode + * @param bizName + * @param difference + * @param remark + */ + public void modMakerFunds(Integer userId, String bizCode, String bizName, BigDecimal difference, String remark) { + Assert.notNull(userId, "NOt Null"); + Assert.notNull(bizCode, "Not Null"); + Assert.notNull(bizName, "Not Null"); + Assert.notNull(difference, "Not Null"); + + UserMakerQuota userMakerQuota= initUserMaker(userId); + if(N.gt(BigDecimal.ZERO,difference)){ + difference=difference.abs().negate(); + } + if(N.gt(difference,BigDecimal.ZERO)){ + difference=difference.abs(); + } + + userMakerQuotaMapper.updateMakerFreeze(userId,difference); + + UserMakerFlow flow=new UserMakerFlow(); + flow.setUserId(userId); + flow.setBizCode(bizCode); + flow.setBizName(bizName); + flow.setAmount(difference.abs()); + flow.setBalance(userMakerQuota.getAmount()); + flow.setCreateTime(new Date()); + userMakerFlowMapper.insert(flow); + } + private UserMakerQuota initUserMaker(Integer userId){ + Assert.notNull(userId, "NOt Null"); + synchronized (this){ + UserMakerQuota userMakerQuota = getUserAccountByUserId(userId); + if(ObjectUtil.isEmpty(userMakerQuota)){ + userMakerQuota=new UserMakerQuota(); + userMakerQuota.setUserId(Long.valueOf(userId)); + userMakerQuota.setAmount(BigDecimal.ZERO); + userMakerQuota.setCreateTime(new Date()); + int result=baseMapper.insert(userMakerQuota); + if(result<1){ + MsgException.checkNull(null,"账户信息不存在"); + } + } + + return userMakerQuota; + } + } + public UserMakerQuota getUserAccountByUserId(Integer userId) { + return baseMapper.selectById(userId); + } + +} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AliPayNotifyServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AliPayNotifyServiceImpl.java index 31210b8..bbb3d83 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AliPayNotifyServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/ali/impl/AliPayNotifyServiceImpl.java @@ -122,7 +122,7 @@ public class AliPayNotifyServiceImpl extends BaseCallbackService implements AliP /** * 更新订单信息和状态 * - * @param param 订单回调信息 + * @param param 银收客信息 */ private void updateOrderStatus(Map param) { // 商户订单号 diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/UserAccountService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/UserAccountService.java index 4a2dfec..f7b1a2a 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/UserAccountService.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/UserAccountService.java @@ -13,7 +13,7 @@ public interface UserAccountService { * @return */ public UserAccount getUserAccountByUserId(Integer userId); - + public UserAccount getUserAccountByUserId(Long userId); /** * 查询用户信息行锁 * @param userId diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/impl/UserAccountServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/impl/UserAccountServiceImpl.java index 0a2875e..b2c0b0d 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/impl/UserAccountServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/userAccount/impl/UserAccountServiceImpl.java @@ -36,6 +36,11 @@ public class UserAccountServiceImpl extends ServiceImpl { */ void register(UserInfo userInfo); + + void goregister(UserInfo userInfo, UserApp userApp, UserPromotion userPromotion); + /** * 忘记密码 * @param userInfo 用户信息 diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceImpl.java index 2e7e850..947bdf0 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceImpl.java @@ -5,9 +5,11 @@ import cn.jiguang.common.utils.StringUtils; import cn.pluss.platform.entity.*; import cn.pluss.platform.exception.MsgException; import cn.pluss.platform.jfShop.JfShopHandler; +import cn.pluss.platform.mapper.UserInfoMapper; import cn.pluss.platform.mapper.UserPromotionMapper; import cn.pluss.platform.roleUserInfo.RoleUserInfoService; import cn.pluss.platform.systemConfig.SystemConfigService; +import cn.pluss.platform.user.UserIpRecordService; import cn.pluss.platform.util.MD5Util; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; @@ -19,7 +21,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Objects; @@ -211,15 +212,39 @@ public class UserInfoServiceImpl extends BaseUserInfoService { // ipRecordService.saveRegIp(userInfo.getId() + "", operatorUserId); } + + @Autowired + private UserIpRecordService ipRecordService; + + + @Autowired + private UserInfoMapper userInfoMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void goregister(UserInfo userInfo, UserApp userApp, UserPromotion userPromotion) { + + save(userInfo); + + userAppService.save(userApp); + + userPromotionMapper.insert(userPromotion); + + ipRecordService.saveRegIp(userInfo.getId() + "", userInfo.getId() + ""); + + + } + + @Resource private UserPromotionMapper userPromotionMapper; - private UserPromotion getUserPromotionByUserId(String userId){ + private UserPromotion getUserPromotionByUserId(String userId) { UserPromotion userPromotion = new UserPromotion(); userPromotion.setUserId(Long.valueOf(userId)); - UserPromotion promotion= userPromotionMapper.selectOne(new QueryWrapper<>(userPromotion)); + UserPromotion promotion = userPromotionMapper.selectOne(new QueryWrapper<>(userPromotion)); - if(ObjectUtil.isNotEmpty(promotion)){ + if (ObjectUtil.isNotEmpty(promotion)) { if("MG".equals(promotion.getTypeCode())||"FB".equals(promotion.getTypeCode())|| "SB".equals(promotion.getTypeCode())||"1".equals(promotion.getIsExtend())|| "2".equals(promotion.getIsExtend()) ||"AG".equals(promotion.getTypeCode())){ diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceNewImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceNewImpl.java index bc7d2fe..565b57c 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceNewImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/userInfo/impl/UserInfoServiceNewImpl.java @@ -181,6 +181,24 @@ public class UserInfoServiceNewImpl extends BaseUserInfoService { } + + @Autowired + private UserIpRecordService ipRecordService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void goregister(UserInfo userInfo, UserApp userApp, UserPromotion userPromotion) { + save(userInfo); + + userApp.setUserId(userInfo.getId()); + userAppService.save(userApp); + + userPromotion.setUserId(userInfo.getId()); + userPromotionMapper.insert(userPromotion); + + ipRecordService.saveRegIp(userInfo.getId() + "", userInfo.getId() + ""); + } + private String getRandomNum() { String inviteNum; UserApp condition = new UserApp(); diff --git a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/component/PayCallbackConsumer.java b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/component/PayCallbackConsumer.java index ff7570c..ff288e4 100644 --- a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/component/PayCallbackConsumer.java +++ b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/component/PayCallbackConsumer.java @@ -1,5 +1,6 @@ package cn.pluss.platform.controller.component; +import cn.pluss.platform.UserMakerQuota.UserMakerQuotaService; import cn.pluss.platform.entity.MerchantOrder; import cn.pluss.platform.merchantOrder.MerchantOrderService; import cn.pluss.platform.merchantProfit.MerchantProfitService; @@ -30,6 +31,9 @@ public class PayCallbackConsumer { @Resource private RealFansService realFansService; + @Resource + private UserMakerQuotaService userMakerQuotaService; + @RabbitHandler public void process(String msg) { log.info("接受到的消息内容为:{}", msg); @@ -42,6 +46,8 @@ public class PayCallbackConsumer { // realFansService.createFansProfit(order); } merchantProfitService.createOrderProfitV2(order,"1"); + //判断是否创客增加额度 + userMakerQuotaService.quotaInfo(order); MerchantOrder update = new MerchantOrder(); update.setId(order.getId()); update.setProfitShareMoney(order.getProfitShareMoney()); diff --git a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/MerchantController.java b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/MerchantController.java index fb15e99..193280e 100644 --- a/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/MerchantController.java +++ b/pluss-wap-page/src/main/java/cn/pluss/platform/controller/home/MerchantController.java @@ -2491,7 +2491,7 @@ public class MerchantController { }else { inviteNum=params[0].split("=")[1]; result.put("typeCode",params[1].split("=")[1]); - result.put("currentFee",(params[1].split("=").length<=1)?"":params[1].split("=")[1]); + result.put("currentFee",(params[2].split("=").length<=1)?"":params[2].split("=")[1]); } String phone = ""; String userName = ""; @@ -2595,7 +2595,7 @@ public class MerchantController { userInfo.setCreateTime(new Date()); userInfo.setTypeCode(typeCode == null? userInfo.getTypeCode(): typeCode); userInfo.setCurrentFee(currentFee== null? userInfo.getCurrentFee(): currentFee); - userInfoService.saveUserInfo(userInfo); + UserApp userApp = new UserApp(); userApp.setUserId(userInfo.getId()); @@ -2649,12 +2649,21 @@ public class MerchantController { promotion.setIsExtend(promotion.getTypeCode().equals("MC")?"0":"1"); promotion.setCreateTime(new Date()); - userPromotionMapper.insert(promotion); + // 可能和数据库存储的数据不一致 userInfo.setCreateTime(null); - userAppService.save(userApp); - ipRecordService.saveRegIp(userInfo.getId() + "", userInfo.getId() + ""); + + + userInfoService.goregister(userInfo,userApp,promotion); + + + + + + + + PhoneValidateCode phoneValidate = new PhoneValidateCode(); if (StringUtil.isNotEmpty(phone)) { phoneValidate.setPhone(phone); diff --git a/pluss-wap-page/src/main/resources/templates/th_pay.html b/pluss-wap-page/src/main/resources/templates/th_pay.html index 9073d75..58c6174 100644 --- a/pluss-wap-page/src/main/resources/templates/th_pay.html +++ b/pluss-wap-page/src/main/resources/templates/th_pay.html @@ -10,6 +10,16 @@ 向商户付款 +