fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java
@@ -1,6 +1,9 @@ package com.yeshi.fanli.controller.client.v2; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -13,11 +16,15 @@ import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.SMSHistory; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo; import com.yeshi.fanli.entity.push.DeviceActive; import com.yeshi.fanli.entity.shop.BanLiShopOrder; import com.yeshi.fanli.entity.system.BusinessSystem; import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.BusinessSystemService; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService; import com.yeshi.fanli.service.inter.money.UserMoneyService; import com.yeshi.fanli.service.inter.order.LostOrderService; @@ -26,6 +33,7 @@ import com.yeshi.fanli.service.inter.push.DeviceTokenHWService; import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService; import com.yeshi.fanli.service.inter.push.DeviceTokenVIVOService; import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; import com.yeshi.fanli.service.inter.user.BindRemindService; @@ -40,8 +48,11 @@ import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.service.inter.user.integral.IntegralDetailService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; @@ -134,7 +145,22 @@ @Resource private BindRemindService bindRemindService; @Resource private UserVIPInfoService userVIPInfoService; @Resource private HongBaoV2CountService hongBaoV2CountService; @Resource private IntegralDetailService integralDetailService; @Resource private BanLiShopOrderService banLiShopOrderService; @Resource private ConfigService configService; /** * 新版登录 V1.5.3 * @@ -302,4 +328,81 @@ out.print(JsonUtil.loadTrueResult("记录成功")); } /** * 获取vip信息 * @param acceptData * @param uid * @param out */ @RequestMapping(value = "getVIPInfo") public void getVIPInfo(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult("用户id为空")); return; } UserInfo userInfo = userInfoService.selectByPKey(uid); if (userInfo == null) { out.print(JsonUtil.loadFalseResult("该用户不存在")); return; } JSONObject data = new JSONObject(); data.put("id", uid); data.put("nickName", userInfo.getNickName()); data.put("portrait", userInfo.getPortrait()); UserVIPInfo userVIPInfo = userVIPInfoService.selectByUid(uid); boolean vip = false; if (userVIPInfo != null && userVIPInfo.getState() != null && userVIPInfo.getState() == UserVIPInfo.STATE_SUCCESS) { vip = true; data.put("applyTime", userVIPInfo.getSuccessTime()); } data.put("vip", vip); // 省钱 -自购产生返利 BigDecimal rewardPurchase = hongBaoV2CountService.getRewardMoneyBySelf(uid); data.put("rurchaseReward", rewardPurchase.setScale(2)); BigDecimal conserveMoney = rewardPurchase; if (!vip) { // 少省钱: 自购产生返利 * 5/12 BigDecimal rate1 = new BigDecimal(5); BigDecimal rate2 = new BigDecimal(12); conserveMoney = MoneyBigDecimalUtil.mul2(rewardPurchase, MoneyBigDecimalUtil.div(rate1, rate2)); } data.put("conserveMoney", conserveMoney.setScale(2)); // 分享赚 BigDecimal rewardShare = hongBaoV2CountService.getRewardMoneyByShare(uid); // 邀请赚 BigDecimal rewardInvite = hongBaoV2CountService.getRewardMoneyByInvite(uid); BigDecimal earnMoney = rewardShare; if (vip) { // 赚钱=分享+邀请 earnMoney = MoneyBigDecimalUtil.add(rewardShare, rewardInvite ); } else { // 少赚钱: 分享赚* 5/12 BigDecimal rate1 = new BigDecimal(5); BigDecimal rate2 = new BigDecimal(12); earnMoney = MoneyBigDecimalUtil.mul2(rewardShare, MoneyBigDecimalUtil.div(rate1, rate2)); } data.put("earnMoney", earnMoney.setScale(2)); // 注:1.有效一级队员定义:2019年1月1日起,自购或分享1笔且付款总金额不小于1元(退款为失效); long teamNum = hongBaoV2CountService.countValidOrderTeamUserByUid(uid, "2019-01-01", new BigDecimal(1)); data.put("teamNum", teamNum); // 累计金币 BigDecimal goldCoin = integralDetailService.getCumulativeMoney(uid); data.put("goldCoin", goldCoin.setScale(0)); // 帮助链接 data.put("helpLink", configService.get("help_link_vip_info")); // 使用红包次数 List<Integer> list = new ArrayList<Integer>(); list.add(BanLiShopOrder.STATE_SUCCESS); data.put("shopNum", banLiShopOrderService.countByUidAndState(uid, list)); out.print(JsonUtil.loadTrueResult(data)); } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java
@@ -196,5 +196,14 @@ * @return */ BigDecimal getRewardMoneyByUid(@Param("uid") Long uid, @Param("list") List<Integer> list); /** * 注:1.有效一级队员定义:2019年1月1日起,自购或分享1笔且付款总金额不小于 payment 元(退款为失效 * @param uid * @param list 类型 * @return */ long countValidOrderTeamUserByUid(@Param("uid") Long uid, @Param("date") String date, @Param("payment") BigDecimal payment); } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/integral/IntegralDetailMapper.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.dao.mybatis.integral; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -76,4 +77,12 @@ */ List<IntegralMonthVO> selectMonthMoneyByUid(@Param("uid") Long uid, @Param("dateFormat") List<String> dateFormat); /** * 统计历史到账 * @param uniqueKey * @return */ BigDecimal getCumulativeMoney(@Param("uid") Long uid); } fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2CountMapper.xml
@@ -378,7 +378,7 @@ <select id="getRewardMoneyByUid" resultType="BigDecimal"> SELECT IFNULL(SUM(v2.`hb_money`),0) FROM yeshi_ec_hongbao_v2 v2 WHERE v2.`hb_uid` = #{uid} WHERE v2.`hb_uid` = #{uid} AND v2.`hb_state` = 3 <if test="list != null and list.size() > 0"> AND <foreach collection="list" item="item" open="(" separator="OR" close=")"> @@ -386,6 +386,15 @@ </foreach> </if> </select> <select id="countValidOrderTeamUserByUid" resultType="Long"> SELECT IFNULL(COUNT(*),0) FROM (SELECT DISTINCT co.`co_uid` FROM `yeshi_ec_common_order` co LEFT JOIN `yeshi_ec_hongbao_order` ho ON co.`co_id` = ho.`ho_order_id` LEFT JOIN yeshi_ec_hongbao_v2 v2 ON v2.`hb_pid` = ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_hongbao_v2 t2 ON t2.`hb_id` = v2.`hb_pid` WHERE v2.`hb_uid` = #{uid} AND co.`co_payment` <![CDATA[>=]]> #{payment} AND t2.`hb_state` = 3 AND v2.`hb_create_time` > #{date} AND (t2.`hb_type` = 1 OR t2.`hb_type` = 20))A </select> </mapper> fanli/src/main/java/com/yeshi/fanli/mapping/integral/IntegralDetailMapper.xml
@@ -131,4 +131,9 @@ </foreach> </select> <select id="getCumulativeMoney" resultType="BigDecimal"> SELECT IFNULL(SUM(d.`td_money`),0) FROM `yeshi_ec_integral_detail` d WHERE d.`td_uid` = #{uid} AND d.`td_money` > 0; </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/count/HongBaoV2CountServiceImpl.java
@@ -311,7 +311,30 @@ @Override public BigDecimal getRewardMoneyBySelf(Long uid) { List<Integer> list = new ArrayList<Integer>(); list.add(HongBaoV2.STATE_YILINGQU); list.add(HongBaoV2.TYPE_ZIGOU); return hongBaoV2CountMapper.getRewardMoneyByUid(uid, list); } @Override public BigDecimal getRewardMoneyByShare(Long uid) { List<Integer> list = new ArrayList<Integer>(); list.add(HongBaoV2.TYPE_SHARE_GOODS); return hongBaoV2CountMapper.getRewardMoneyByUid(uid, list); } @Override public BigDecimal getRewardMoneyByInvite(Long uid) { List<Integer> list = new ArrayList<Integer>(); list.add(HongBaoV2.TYPE_YIJI); list.add(HongBaoV2.TYPE_ERJI); list.add(HongBaoV2.TYPE_SHARE_YIJI); list.add(HongBaoV2.TYPE_SHARE_ERJI); return hongBaoV2CountMapper.getRewardMoneyByUid(uid, list); } @Override public long countValidOrderTeamUserByUid(Long uid, String date, BigDecimal payment) { return hongBaoV2CountMapper.countValidOrderTeamUserByUid(uid, date, payment); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralDetailServiceImpl.java
@@ -191,5 +191,11 @@ return monthCount + detailCount; } @Override public BigDecimal getCumulativeMoney(Long uid) { return integralDetailMapper.getCumulativeMoney(uid); } } fanli/src/main/java/com/yeshi/fanli/service/inter/count/HongBaoV2CountService.java
@@ -206,6 +206,29 @@ * @param uid * @return */ public BigDecimal getRewardMoneyBySelf(Long uid); public BigDecimal getRewardMoneyBySelf(Long uid); /** * 分享奖励到账金额 * @param uid * @return */ public BigDecimal getRewardMoneyByShare(Long uid); /** * 下级产生奖励到账金额 * @param uid * @return */ public BigDecimal getRewardMoneyByInvite(Long uid); /** * 有效一级队员定义:2019年1月1日起(date),自购或分享1笔且付款总金额不小于 payment 元(退款为失效 * @param uid * @param date * @param payment * @return */ public long countValidOrderTeamUserByUid(Long uid, String date, BigDecimal payment); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/integral/IntegralDetailService.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.service.inter.user.integral; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -40,4 +41,11 @@ */ public IntegralDetail getDetailByUniqueKey(String uniqueKey); /** * 查询历史到账金币 * @param uid * @return */ public BigDecimal getCumulativeMoney(Long uid); }