linxk il y a 1 semaine
Parent
commit
c9f6163b55

+ 5 - 0
cif-service/src/main/java/com/txz/cif/dao/RedEnvelopeMapper.java

@@ -2,11 +2,16 @@ package com.txz.cif.dao;
 
 import com.txz.cif.core.Mapper;
 import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.web.bo.UserTopBo;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 public interface RedEnvelopeMapper extends Mapper<RedEnvelope> {
     BigDecimal sumWithDay(Date day, Long userId,Integer type);
 
+
+    List<UserTopBo> top(HashMap<String, Object> map);
 }

+ 4 - 0
cif-service/src/main/java/com/txz/cif/service/RedEnvelopeService.java

@@ -3,9 +3,11 @@ import com.txz.cif.dto.Result;
 import com.txz.cif.model.RedEnvelope;
 import com.txz.cif.core.Service;
 import com.txz.cif.param.SignRedEnvelopeParam;
+import com.txz.cif.web.bo.UserTopBo;
 import com.txz.cif.web.para.RedEnvelopeParam;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 
 /**
@@ -23,4 +25,6 @@ public interface RedEnvelopeService extends Service<RedEnvelope> {
      * @return
      */
     BigDecimal sumWithDay(Integer day, Long userId,Integer type);
+
+    List<UserTopBo> top(Integer type, Integer page, Integer size);
 }

+ 14 - 0
cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java

@@ -3,6 +3,7 @@ package com.txz.cif.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
+import com.github.pagehelper.PageHelper;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.dao.RedEnvelopeMapper;
 import com.txz.cif.dto.Result;
@@ -18,6 +19,7 @@ import com.txz.cif.service.ConfigMemberService;
 import com.txz.cif.service.RedEnvelopeService;
 import com.txz.cif.core.AbstractService;
 import com.txz.cif.service.UserService;
+import com.txz.cif.web.bo.UserTopBo;
 import com.txz.cif.web.para.RedEnvelopeParam;
 import com.txz.operating.dto.ConfigDTO;
 import org.springframework.stereotype.Service;
@@ -29,6 +31,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 
 
@@ -94,6 +97,17 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         }
           }
 
+    @Override
+    public List<UserTopBo> top(Integer type, Integer page, Integer size) {
+        PageHelper.startPage(page, size);
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("page",page);
+        map.put("size",size);
+        map.put("startTime",DateUtil.offsetDay(DateUtil.date(),-8));
+        map.put("endTime",DateUtil.yesterday());
+        return cRedEnvelopeMapper.top( map);
+    }
+
     /**
      * 构建红包对象
      * @param userId

+ 41 - 0
cif-service/src/main/java/com/txz/cif/web/RedEnvelopeApiController.java

@@ -4,12 +4,16 @@ import com.txz.cif.core.AuthService;
 import com.txz.cif.core.Result;
 import com.txz.cif.core.ResultGenerator;
 import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.model.User;
 import com.txz.cif.service.RedEnvelopeService;
 
 import com.txz.cif.core.ResultCode;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.txz.cif.service.UserService;
+import com.txz.cif.web.bo.UserDetailBo;
+import com.txz.cif.web.bo.UserTopBo;
 import com.txz.cif.web.para.RedEnvelopeListParam;
 import com.txz.cif.web.para.RedEnvelopeParam;
 import org.springframework.web.bind.annotation.*;
@@ -26,6 +30,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.commons.lang.StringUtils;
 
 /**
@@ -44,6 +50,9 @@ public class RedEnvelopeApiController {
 	@Resource
 	private AuthService authService;
 
+	@Resource
+	private UserService userService;
+
     @PostMapping("/list")
 	@ApiOperation(value = "redEnvelope获取列表",httpMethod = "POST")
     public Result<List<RedEnvelope>> list(@RequestBody RedEnvelopeListParam param, HttpServletRequest request) {
@@ -83,4 +92,36 @@ public class RedEnvelopeApiController {
 		}
         return ResultGenerator.genSuccessResult(pageInfo);
     }
+
+
+	@GetMapping("/top")
+	@ApiOperation(value = "排行榜type 1 7天收益排行",httpMethod = "GET")
+	public Result<List<UserTopBo>> top(@RequestParam(defaultValue = "1") Integer type,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer size) {
+		List<UserTopBo> tops= redEnvelopeService.top(type,page,size);
+		PageInfo pageInfo = new PageInfo(tops);
+		pageInfo.setList(tops.stream().map(e->{
+			User user = userService.findById(e.getUserId());
+			if (user != null){
+				e.setHeadPic(user.getHeadPic());
+				e.setNickname(user.getNickname());
+				e.setNickname(user.getName());
+				e.setVipLevel(user.getVipLevel());
+				e.setUserNo(user.getUserNo());
+			}
+			Condition c = new Condition(User.class);
+			c.createCriteria().andEqualTo("pid",user.getId());
+			Integer invited = userService.countByCondition(c);
+			if (invited != null){
+				e.setInviteNum(invited);
+			}
+			c = new Condition(User.class);
+			c.createCriteria().andEqualTo("ppid",user.getId());
+			Integer invited2 = userService.countByCondition(c);
+			if (invited != null && invited2 != null){
+				e.setTeamNum(invited+invited2);
+			}
+			return e;
+		}).collect(Collectors.toList()));
+		return ResultGenerator.genSuccessResult(pageInfo);
+	}
 }

+ 53 - 0
cif-service/src/main/java/com/txz/cif/web/bo/UserTopBo.java

@@ -0,0 +1,53 @@
+package com.txz.cif.web.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@ToString
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("用户排行信息")
+public class UserTopBo {
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value="userId")
+    private Long userId;
+
+    @ApiModelProperty(value="headPic头像")
+    private String headPic;
+
+    @ApiModelProperty(value="userId用户号")
+    private String userNo;
+    @ApiModelProperty(value="nickname昵称")
+    private String nickname;
+
+
+    @ApiModelProperty(value="vip等级")
+    private Integer vipLevel;
+
+    //统计信息
+    @ApiModelProperty(value="邀请好友数")
+    private Integer inviteNum;
+
+    @ApiModelProperty(value="团队人数")
+    private Integer teamNum;
+
+
+    @ApiModelProperty(value="7日收益")
+    private BigDecimal L7DEarnings;
+
+
+
+    @ApiModelProperty(value="7日成团数")
+    private Integer groupNum;
+
+}

+ 16 - 0
cif-service/src/main/resources/mapper/RedEnvelopeMapper.xml

@@ -42,4 +42,20 @@
       and status = 2
     </if>
   </select>
+
+  <select id="top" resultType="com.txz.cif.web.bo.UserTopBo">
+    SELECT
+    user_id as userId,
+    SUM(amount) AS L7DEarnings,
+    count(id) AS groupNum
+    FROM
+      c_red_envelope
+    WHERE
+    create_time >= #{startTime}
+    AND   #{endTime}  > create_time
+    GROUP BY
+    user_id
+    ORDER BY
+    L7DEarnings DESC;
+  </select>
 </mapper>