admin
2020-05-20 98b1a0affd69bbe63223c21fdd2c404e8bedfccb
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java
@@ -2,8 +2,10 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -28,13 +30,18 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.common.Config;
import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum;
import com.yeshi.fanli.entity.redpack.RedPackExchange;
import com.yeshi.fanli.entity.redpack.RedPackWinInvite;
import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.redpack.RedPackExchangeException;
import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException;
import com.yeshi.fanli.service.AdminUserService;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
import com.yeshi.fanli.service.inter.redpack.RedPackConfigService;
@@ -47,11 +54,15 @@
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.UserInviteUtil;
import com.yeshi.fanli.util.email.MailSenderUtil;
import com.yeshi.fanli.vo.redpack.RedPackDetailVO;
import com.yeshi.fanli.vo.redpack.RedPackGiveVO;
import com.yeshi.fanli.vo.redpack.RedPackWinInviteVO;
import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO;
@@ -96,11 +107,16 @@
   @Resource
   private RedPackForbidService redPackForbidService;
   @Resource
   private ThreeSaleSerivce threeSaleSerivce;
   
   @Resource
   private ConfigService configService;
   
   @Resource
   private AdminUserService adminUserService;
   /**
    * 统计
    * 
@@ -179,8 +195,9 @@
      data.put("extractMax", redPackConfigService.getValueByKey("extract_money_max"));
      data.put("extractBanlenMin", redPackConfigService.getValueByKey("extract_banlen_min"));
      data.put("extractDesc", "注:3个工作日内完成审核,红包提现成功后将会进入到余额。");
      data.put("giveTotal", redPackGiveRecordService.countGiveList(uid));
      data.put("useLink", redPackConfigService.getValueByKey("use_link"));
      data.put("winLink", redPackConfigService.getValueByKey("invite_win_redpack_link"));
      data.put("todayWin", todayWin.setScale(2).toString());
      data.put("yesterdayWin", yesterdayWin.setScale(2).toString());
@@ -297,6 +314,32 @@
      }
   }
   @RequestMapping(value = "getGiveList", method = RequestMethod.POST)
   public void getGiveList(AcceptData acceptData, Integer page, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      if (page == null || page <= 0)
         page = 1;
      try {
         List<RedPackGiveVO> list = redPackGiveRecordService.getGiveList(page, Constant.PAGE_SIZE, uid);
         GsonBuilder gsonBuilder = new GsonBuilder();
         Gson gson = gsonBuilder.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy.MM.dd HH:mm").create();
         JSONObject data = new JSONObject();
         data.put("list", gson.toJson(list));
         data.put("count", redPackGiveRecordService.countGiveList(uid));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadFalseResult(1, "查询失败"));
      }
   }
   /**
    * 转换红包为真实金钱
    * 
@@ -315,6 +358,35 @@
      try {
         redPackExchangeService.exchangeCash(uid, amount);
         out.print(JsonUtil.loadTrueResult("提现申请成功"));
         ThreadUtil.run(new Runnable() {
            @Override
            public void run() {
               JSONObject json = new JSONObject();
               json.put("timeStamp", java.lang.System.currentTimeMillis());
               json.put("adminId", 4L);
               String sign = AESUtil.encrypt(json.toString(), Constant.ADMINH5_AESKEY);
               String url = "";
               try {
                  url = String.format("%s?from=emailh5&sign=%s",
                        Constant.systemCommonConfig.getExtractNotifyUrl(), URLEncoder.encode(sign, "UTF-8"));
               } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
               }
               long[] targetUids = new long[] { 3L, 4L };
               Config config = configService.getConfig(ConfigKeyEnum.extractCodeEmailFrom.getKey());
               String[] sts = config.getValue().split(",");
               String account = sts[0];
               String pwd = sts[1];
               for (long adminId : targetUids) {
                  AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
                  String msg = "有用户采用红包兑换现金";
                  boolean isS = MailSenderUtil.sendEmail(adminUser.getEmail(), account, pwd, "红包兑换现金提醒", msg);
               }
            }
         });
      } catch (RedPackExchangeException e) {
         out.print(JsonUtil.loadFalseResult(1, e.getMsg()));
      }
@@ -394,12 +466,12 @@
      data.put("redPackLock", redPackForbidService.verifyForbid(uid));
      String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
      if ( !StringUtil.isNullOrEmpty(inviteCode)) {
      if (!StringUtil.isNullOrEmpty(inviteCode)) {
         data.put("inviteCode", inviteCode);
      } else {
         data.put("inviteCode", "");
      }
      // 赠送免单券
      long freeCouponCount = userSystemCouponService.countGiveFreeCoupon(uid);
      // 奖励券
@@ -415,8 +487,6 @@
      }
   }
   /**
    *  该用户邀请奖金榜
    * 
@@ -425,27 +495,27 @@
    * @param out
    */
   @RequestMapping(value = "getInviteReward")
   public void getInviteReward(AcceptData acceptData,Integer page, Long uid, String callback, PrintWriter out) {
   public void getInviteReward(AcceptData acceptData, Integer page, Long uid, String callback, PrintWriter out) {
      if (uid == null || uid <= 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      if (page == null || page < 1)
         page = 1;
      List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>();
      List<RedPackWinInvite> list = redPackWinInviteService.getWinTopListByBossId(page, Constant.PAGE_SIZE, uid);
      if (list != null) {
         for (RedPackWinInvite win: list) {
         for (RedPackWinInvite win : list) {
            ThreeSale threeSale = threeSaleSerivce.getNearRelationByBossIdAndWorkerId(uid, win.getTeamUid());
            if (threeSale == null)
               continue;
            UserInfo userInfo = userInfoService.selectByPKey(win.getTeamUid());
            if (userInfo == null)
               continue;
            RedPackWinProgressVO progressVO = new RedPackWinProgressVO();
            progressVO.setUid(userInfo.getId());
            progressVO.setName(userInfo.getNickName());
@@ -455,7 +525,7 @@
            listVO.add(progressVO);
         }
      }
      JSONObject data = new JSONObject();
      data.put("list", listVO);
      data.put("count", redPackWinInviteService.countWinTopListByBossId(uid));
@@ -465,8 +535,7 @@
         out.print(JsonUtil.loadTrueResult(data));
      }
   }
   /**
    *  该用户邀请进度
    * 
@@ -480,7 +549,7 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "传递参数缺失"));
         return;
      }
      JSONObject data = new JSONObject();
      data.put("list", redPackWinInviteService.getInviteProgressByWorkerId(uid, tid));
      data.put("num", redPackWinInviteService.countTeamNumByTid(uid, tid));