创客额度相关,分享改bug,
This commit is contained in:
@@ -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<Object> quota() {
|
||||
Map<String, BigDecimal> quota = userMakerQuotaService.quota();
|
||||
return ResultGenerator.genSuccessResult(quota);
|
||||
}
|
||||
|
||||
/**
|
||||
* 额度明细
|
||||
* @param page
|
||||
* @param size
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/quotaInfo")
|
||||
public Result<Object> quotaList(Integer page, Integer size, Integer type){
|
||||
return ResultGenerator.genSuccessResult(userMakerQuotaService.quotaList(page,size,type));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
@@ -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<UserAccountFlow> {
|
||||
public interface UserAccountFlowMapper extends BaseMapper<UserAccountFlow> {
|
||||
|
||||
@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<UserAccountFlow> selectByUserIdType(@Param("userId") Long userId,@Param("pageSize") Integer pageSize,@Param("offset") Integer offset);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ public interface UserInfoMapper extends BaseMapper<UserInfo> {
|
||||
*/
|
||||
UserInfo selectMainUserInfo(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* @description:取主商户和子商户信息
|
||||
* @date: 2021/9/23 15:43
|
||||
|
||||
@@ -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<UserMakerFlow> {
|
||||
|
||||
@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<UserMakerFlow> selectByUserId(@Param("userId") Long userId,@Param("pageSize") Integer pageSize,@Param("offset") Integer offset);
|
||||
}
|
||||
@@ -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<UserMakerQuota> {
|
||||
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);
|
||||
|
||||
}
|
||||
@@ -34,6 +34,7 @@ public interface UserPromotionMapper extends BaseMapper<UserPromotion> {
|
||||
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" +
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?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="cn.pluss.platform.mapper.UserMakerQuotaMapper">
|
||||
|
||||
<select id="sumQuota" resultType="java.math.BigDecimal">
|
||||
SELECT SUM(amount)
|
||||
FROM tb_pluss_user_maker_quota
|
||||
WHERE userId = #{userId}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -37,4 +37,15 @@
|
||||
from tb_pluss_user_promotion
|
||||
where user_id = #{userId}
|
||||
</select>
|
||||
<select id="selectByUserIdMC" resultType="cn.pluss.platform.entity.UserPromotion">
|
||||
select *
|
||||
from tb_pluss_user_promotion
|
||||
<where>
|
||||
user_id = #{userId}
|
||||
AND type_code = 'MC'
|
||||
AND is_extend = '1'
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<UserMakerQuota> {
|
||||
|
||||
Map<String, BigDecimal> quota();
|
||||
|
||||
void quotaInfo(MerchantOrder order);
|
||||
|
||||
List<UserMakerQuotaVO> quotaList(Integer page, Integer size,Integer type);
|
||||
}
|
||||
@@ -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<UserMakerQuotaMapper, UserMakerQuota> 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<String, BigDecimal> quota() {
|
||||
UserApp userApp = userAppService.queryUserAppByToken();
|
||||
BigDecimal bigDecimal = userMakerQuotaMapper.sumQuota(userApp.getUserId());
|
||||
UserAccount userAccountByUserId = userAccountService.getUserAccountByUserId(userApp.getUserId());
|
||||
|
||||
HashMap<String, BigDecimal> 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<UserMakerQuotaVO> 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<UserMakerFlow> userMakerFlowsList = userMakerFlowMapper.selectByUserId(userApp.getUserId(), pageSize, offset);
|
||||
List<UserMakerQuotaVO> 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<UserAccountFlow> userAccountFlowsList = userAccountFlowMapper.selectByUserIdType(userApp.getUserId(),pageSize, offset);
|
||||
List<UserMakerQuotaVO> 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<UserMakerQuotaVO>();
|
||||
}
|
||||
|
||||
//增加额度
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class AliPayNotifyServiceImpl extends BaseCallbackService implements AliP
|
||||
/**
|
||||
* 更新订单信息和状态
|
||||
*
|
||||
* @param param 订单回调信息
|
||||
* @param param 银收客信息
|
||||
*/
|
||||
private void updateOrderStatus(Map<String, Object> param) {
|
||||
// 商户订单号
|
||||
|
||||
@@ -13,7 +13,7 @@ public interface UserAccountService {
|
||||
* @return
|
||||
*/
|
||||
public UserAccount getUserAccountByUserId(Integer userId);
|
||||
|
||||
public UserAccount getUserAccountByUserId(Long userId);
|
||||
/**
|
||||
* 查询用户信息行锁
|
||||
* @param userId
|
||||
|
||||
@@ -36,6 +36,11 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountMapper, UserA
|
||||
return baseMapper.selectById(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserAccount getUserAccountByUserId(Long userId) {
|
||||
return baseMapper.selectById(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserAccount getUserAccountByUserIdForUpdate(Integer userId) {
|
||||
return userAccountMapper.selectUserByUserId(userId);
|
||||
|
||||
@@ -8,6 +8,7 @@ import cn.pluss.platform.dto.ChangePwdDTO;
|
||||
import cn.pluss.platform.entity.MerchantOrder;
|
||||
import cn.pluss.platform.entity.UserApp;
|
||||
import cn.pluss.platform.entity.UserInfo;
|
||||
import cn.pluss.platform.entity.UserPromotion;
|
||||
import cn.pluss.platform.exception.MsgException;
|
||||
import cn.pluss.platform.mapper.UserInfoMapper;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -27,6 +28,9 @@ public interface UserInfoService extends IService<UserInfo> {
|
||||
*/
|
||||
void register(UserInfo userInfo);
|
||||
|
||||
|
||||
void goregister(UserInfo userInfo, UserApp userApp, UserPromotion userPromotion);
|
||||
|
||||
/**
|
||||
* 忘记密码
|
||||
* @param userInfo 用户信息
|
||||
|
||||
@@ -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())){
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -10,6 +10,16 @@
|
||||
<!-- <link rel="stylesheet" href="https://act.weixin.qq.com/static/cdn/css/wepayui/0.1.1/wepayui.min.css">-->
|
||||
<script src="https://www.shouyinbei.net/resources/js/alipayjsapi.min3.1.1.js"></script>
|
||||
<title>向商户付款</title>
|
||||
<script>
|
||||
window.alert = function (name) {
|
||||
var iframe = document.createElement("IFRAME");
|
||||
iframe.style.display = "none";
|
||||
iframe.setAttribute("src", 'data:text/plain,');
|
||||
document.documentElement.appendChild(iframe);
|
||||
window.frames[0].window.alert(name);
|
||||
iframe.parentNode.removeChild(iframe);
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
* {
|
||||
padding: 0;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
|
||||
<script src="http://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
|
||||
<script type="text/javascript" src="/wap/resources/js/zepto.weui.js"></script>
|
||||
<title>分享</title>
|
||||
<style>
|
||||
div,
|
||||
|
||||
Reference in New Issue
Block a user