package com.hfkj.controller.partner; import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.security.UserCenter; import com.hfkj.common.utils.DateUtil; import com.hfkj.common.utils.ResponseMsgUtil; import com.hfkj.entity.BsPartnerLevel; import com.hfkj.entity.BsPartnerPool; import com.hfkj.entity.BsPartnerPoolPre; import com.hfkj.model.ResponseData; import com.hfkj.model.UserSessionObject; import com.hfkj.service.partner.BsPartnerLevelService; import com.hfkj.service.partner.BsPartnerPoolPreService; import com.hfkj.service.partner.BsPartnerPoolService; import com.hfkj.service.partner.PartnerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping(value = "/partner") @Api(value = "合伙人") public class PartnerController { private static final Logger log = LoggerFactory.getLogger(PartnerController.class); @Resource private BsPartnerLevelService bsPartnerLevelService; @Resource private BsPartnerPoolPreService bsPartnerPoolPreService; @Resource private BsPartnerPoolService bsPartnerPoolService; @Resource private UserCenter userCenter; @Resource private PartnerService partnerService; @RequestMapping(value="/queryDetailByLevel",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "根据等级类型查询详情") public ResponseData queryDetailByLevel( @RequestParam(value = "level" , required = false) Integer level) { try { // 用户session UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); if (userSession == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); } return ResponseMsgUtil.success(bsPartnerLevelService.queryDetail(level)); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value="/inPartner",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "参与竞选合伙人") public ResponseData inPartner(@RequestBody JSONObject body) { try { // 用户session UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); if (userSession == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); } if (body == null|| body.getInteger("level") == null || body.getBigDecimal("goldCoin") == null ) { throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); } body.put("userId" , userSession.getUser().getId()); body.put("userName" , userSession.getUser().getName()); partnerService.inPartner(body); return ResponseMsgUtil.success("投入成功"); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value="/getUserPartner",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询合伙人等级与当期投入总元宝,与用户当前等级") public ResponseData getUserPartner(@RequestParam(value = "level" , required = false) Integer level) { try { // 用户session UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); if (userSession == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); } // 查询上一期 String lotteryNo = DateUtil.date2String(new Date() , DateUtil.YMD); JSONObject obj = new JSONObject(); // 查询当期用户内容 Map map = new HashMap<>(); map.put("status" , 1); map.put("level" , level); map.put("lotteryNo" , lotteryNo); List list = bsPartnerPoolPreService.queryAllList(map); BigDecimal toDayPartner = list.stream().map(BsPartnerPoolPre::getGoldCoin).reduce(BigDecimal.ZERO, BigDecimal::add); obj.put("toDayPartner" , toDayPartner); // 查询合伙人等级内容 List partnerLevels = bsPartnerLevelService.queryAllList(map); obj.put("partnerLevels" , partnerLevels); // 查询用户合伙人等级 BsPartnerPool partnerPool = bsPartnerPoolService.queryDetail(userSession.getUser().getId() , level); obj.put("partnerLevel" , partnerPool); return ResponseMsgUtil.success(obj); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value="/prePartner",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询上一期竞选与竞选排名") public ResponseData prePartner(@RequestParam(value = "level" , required = true) Integer level) { try { // 用户session UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); if (userSession == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); } // 查询上一期 String lotteryNo = DateUtil.date2String(new Date() , DateUtil.YMD); Map map = new HashMap<>(); map.put("status" , 1); map.put("level" , level); List list = bsPartnerPoolService.queryAllList(map); Map userMap = new HashMap<>(); userMap.put("userId" , userSession.getUser().getId()); userMap.put("lotteryNo" , lotteryNo); Map mapPre = new HashMap<>(); int preLotteryNo = Integer.parseInt(lotteryNo) - 1; mapPre.put("lotteryNo" , Integer.toString(preLotteryNo)); map.put("level" , level); List pres = bsPartnerPoolPreService.queryAllList(mapPre); JSONObject obj = new JSONObject(); // 插入上一期内容 obj.put("partnerPoolPre" , list); obj.put("partnerPoolUser" , bsPartnerPoolPreService.queryDetail(userMap)); obj.put("userPoolPre" , pres.stream().filter(s->s.getUserId().equals(userSession.getUser().getId())).filter(s->s.getLevel().equals(level)).findFirst().orElse(null)); return ResponseMsgUtil.success(obj); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value="/startCampaign",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "开始竞选") public ResponseData startCampaign( @RequestParam(value = "level" , required = false) Integer level) { try { partnerService.startCampaign(); System.out.println(new Date()); return ResponseMsgUtil.success(new Date()); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value="/dividend",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "分红") public ResponseData dividend() { try { partnerService.dividend(); return ResponseMsgUtil.success(""); } catch (Exception e) { log.error("error!",e); return ResponseMsgUtil.exception(e); } } }