Parcourir la source

fix
chatGpt账号10人月付修改密码;分销推广今日排行

zoujiajian il y a 3 ans
Parent
commit
0e1948eac3

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserMapper.java

@@ -3,9 +3,11 @@ package com.cyksj.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.User;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @author chan
@@ -27,4 +29,7 @@ public interface UserMapper extends BaseMapper<User> {
 
     @Update("update user set active_points = active_points - #{subPoints} where active_points > 0 and active_points >= #{subPoints} and id = #{userId}")
     Integer subActivePoints(@Param("userId") Long userId, @Param("subPoints") BigDecimal subPoints);
+
+    @Select("select id from user where nickname like concat(#{nickname},'%')")
+    List<Long> selectListByNickname(String nickname);
 }

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeMapper.java

@@ -18,7 +18,7 @@ public interface UserDistributeMapper extends BaseMapper<UserDistribute> {
 
 	Integer countUserNum(Long userId);
 
-	BigDecimal getHasPayOrdersBySharedId(@Param("userId") Long userId, @Param("noOrderStatus") List<String> noOrderStatus);
+	BigDecimal getHasPayOrdersBySharedId(@Param("userId") Long userId, @Param("noOrderStatus") List<String> noOrderStatus, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-	BigDecimal countHasPayBySharedId(@Param("userId") Long userId, @Param("noOrderStatus") List<String> noOrderStatus);
+	BigDecimal countHasPayBySharedId(@Param("userId") Long userId, @Param("noOrderStatus") List<String> noOrderStatus, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/model/manage/views/AccountView.java

@@ -100,11 +100,11 @@ public class AccountView {
     @DbField("select count(ur.id) from user_ticket_cleared_record ur where ur.account_id = a.id and deleted is true and source = 'self' :yesTime:")
     private Integer expiryCount;
 
-    @DbField("if((select s.account_id from (select s.account_id, count(*) num" +
+    @DbField("if((select s.account_id from (select s.account_id,count(*) num" +
             " from (select ur.account_id, ur.relation_id" +
             " from user_ticket_cleared_record ur where ur.deleted is true and source = 'self' :yesTime:" +
             " group by ur.account_id, ur.relation_id) s" +
-            "  group by s.account_id) s left join groups_trips gt on gt.account_id = s.account_id where s.account_id = a.id and s.num >= gt.num)is null,false,true)")
+            "  group by s.account_id) s left join groups_trips gt on gt.account_id = s.account_id where s.account_id = a.id and if(gt.sku_id = 161,s.num >= 10,s.num >= gt.num))is null,false,true)")
     private Boolean expiredAll;
 
     @DbField("max(gr.expiry_time)")

+ 11 - 14
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeViews.java

@@ -1,6 +1,5 @@
 package com.cyksj.model.views;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
@@ -18,9 +17,10 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "user_distribute ud inner join user u on u.id = ud.user_id" +
-		" left join cms_user cu on cu.id = ud.business_id",
-where = "ud.deleted is true")
+@SearchBean(tables = "user_distribute ud left join user_distribute_shared us on ud.user_id = us.shared_id" +
+		" left join order_don od on od.user_id = us.user_id and od.is_fixed_distribute = 1 and od.status not in ('noPayment', 'close') :time:",
+		where = "ud.deleted is true",
+		groupBy = "ud.id,ud.user_id,ud.business_id,ud.remark,ud.created_time,ud.update_time")
 public class UserDistributeViews {
 
 	@DbField("ud.id")
@@ -32,29 +32,28 @@ public class UserDistributeViews {
 	@DbField("ud.business_id")
 	private Long businessId;
 
-	@DbField("cu.nickname")
+	@DbIgnore
 	private String businessName;
 
-	@DbField("u.nickname")
+	@DbIgnore
 	private String nickname;
 
 	@DbField("ud.remark")
 	private String remark;
 
-	@DbIgnore
-	@TableField(exist = false)
+	@DbField("count(od.id)")
 	private Integer orders;
 
 	/**
 	 * 分销人数
 	 */
-	@DbIgnore
+	@DbField("count(DISTINCT us.user_id)")
 	private Integer distributeUserNum;
 
 	/**
 	 * 分销订单金额(无需产生积分)
 	 */
-	@DbIgnore
+	@DbField("ifnull(sum(od.money),0) - ifnull(sum(od.refund_money),0)")
 	private BigDecimal distributeOrdersMoney;
 
 	/**
@@ -64,15 +63,13 @@ public class UserDistributeViews {
 	private BigDecimal distributeConsumerRate;
 
 	@DbIgnore
-	@TableField(exist = false)
 	private BigDecimal availableMoney;
 
 	@DbIgnore
-	@TableField(exist = false)
 	private BigDecimal gotMoney;
 
-	@DbField("u.points")
-	private BigDecimal points;
+	@DbIgnore
+	private BigDecimal points = BigDecimal.ZERO;
 
 	@DbField("ud.created_time")
 	private Date createdTime;

+ 16 - 4
netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml

@@ -7,8 +7,6 @@
         from `user_distribute_shared` us
                  inner join `order_don` od
                             on od.user_id = us.user_id
-                 inner join `distribute_waiting_send_points` dp
-                            on dp.order_id = od.id
         where us.shared_id = #{userId}
           and od.is_fixed_distribute is true
           and od.status not in ('close', 'noPayment')
@@ -21,22 +19,36 @@
     </select>
 
     <select id="getHasPayOrdersBySharedId" resultType="java.math.BigDecimal">
-        select ifnull(sum(od.money),0) from `user_distribute_shared` us left join `order_don` od on od.user_id = us.user_id
+        select ifnull(sum(od.money),0) from `user_distribute_shared` us left join `order_don` od on od.user_id =
+        us.user_id
         where us.shared_id = #{userId}
         and is_fixed_distribute is true
         and od.status not in
         <foreach collection="noOrderStatus" item="item" open="(" separator="," close=")">
             #{item}
         </foreach>
+        <if test="startTime != null and startTime != ''">
+            and od.created_time >= #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and od.created_time &lt; #{endTime}
+        </if>
     </select>
 
     <select id="countHasPayBySharedId" resultType="java.math.BigDecimal">
-        select count(distinct od.user_id) from `user_distribute_shared` us left join `order_don` od on od.user_id = us.user_id
+        select count(distinct od.user_id) from `user_distribute_shared` us left join `order_don` od on od.user_id =
+        us.user_id
         where us.shared_id = #{userId}
         and is_fixed_distribute is true
         and od.status not in
         <foreach collection="noOrderStatus" item="item" open="(" separator="," close=")">
             #{item}
         </foreach>
+        <if test="startTime != null and startTime != ''">
+            and od.created_time >= #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and od.created_time &lt; #{endTime}
+        </if>
     </select>
 </mapper>

+ 32 - 14
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -143,29 +143,47 @@ public class DistributeController {
 	 * 固定推广者列表
 	 */
 	@GetMapping
-	public Result<SearchResult<UserDistributeViews>> distributeList(HttpServletRequest request) {
+	public Result<SearchResult<UserDistributeViews>> distributeList(String nickname, String startTime, String endTime) {
 		long adminId = StpUtil.getLoginIdAsLong();
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		//是否是商务人员
 		if (userBusinessRateService.isBusiness(adminId)) {
 			builder.field(UserDistributeViews::getBusinessId, adminId);
 		}
-		SearchResult<UserDistributeViews> search = beanSearcher.search(UserDistributeViews.class, builder.build());
+		if (StrUtil.isNotBlank(nickname)) {
+			List<Long> userIds = userMapper.selectListByNickname(nickname);
+			builder.field(UserDistributeViews::getUserId, userIds).op(Operator.InList);
+		}
+		String timeSql = StrUtil.EMPTY;
+		if (StrUtil.isNotBlank(startTime)) {
+			timeSql += String.format("and od.created_time >= '%s'", startTime);
+		}
+		if (StrUtil.isNotBlank(endTime)) {
+			timeSql += String.format("and od.created_time < '%s'", endTime);
+		}
+		if (StrUtil.isNotBlank(timeSql)) {
+			builder.put("time", timeSql);
+			//按时间筛选 固定推广人分销情况 倒序
+			builder.orderBy(UserDistributeViews::getDistributeOrdersMoney).desc();
+		}
+		SearchResult<UserDistributeViews> search = beanSearcher.search(UserDistributeViews.class,
+				builder.build());
 		DistributePointsExchangeMoney pointsMoneyRate = distributePointsExchangeMoneyMapper.selectOne(null);
-		Optional.ofNullable(search.getDataList()).ifPresent(list -> list.forEach(view -> {
+		search.getDataList().forEach(view -> {
+			Optional.ofNullable(cmsUserMapper.selectById(view.getBusinessId())).ifPresent(business -> view.setBusinessName(business.getNickname()));
+			Optional.ofNullable(userMapper.selectById(view.getUserId())).ifPresent(user -> {
+				view.setNickname(user.getNickname());
+				view.setPoints(user.getPoints());
+			});
 			BigDecimal num = view.getPoints().divide(BigDecimal.valueOf(pointsMoneyRate.getPoints()), RoundingMode.DOWN);
 			view.setAvailableMoney(pointsMoneyRate.getMoney().multiply(num));
 			List<DistributeMoneyApply> moneyApplies = distributeMoneyApplyMapper.selectList(Wrappers.lambdaQuery(DistributeMoneyApply.class).eq(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success).eq(DistributeMoneyApply::getUserId, view.getUserId()).select(DistributeMoneyApply::getMoney));
 			Optional<BigDecimal> money = moneyApplies.stream().map(apply -> apply.getMoney()).reduce(BigDecimal::add);
 			view.setGotMoney(money.isPresent() ? money.get() : BigDecimal.ZERO);
-			Integer orders = userDistributeMapper.count(view.getUserId());
-			view.setOrders(orders);
-			BigDecimal hasPayMoney = userDistributeMapper.getHasPayOrdersBySharedId(view.getUserId(), Constant.noOrderAllStatus);
-			BigDecimal hasPayCount = userDistributeMapper.countHasPayBySharedId(view.getUserId(), Constant.noOrderAllStatus);
-			view.setDistributeOrdersMoney(hasPayMoney);
-			view.setDistributeUserNum(userDistributeMapper.countUserNum(view.getUserId()));
+			Integer orders = view.getOrders();
+			BigDecimal hasPayCount = userDistributeMapper.countHasPayBySharedId(view.getUserId(), Constant.noOrderAllStatus, startTime, endTime);
 			view.setDistributeConsumerRate(orders == 0 ? BigDecimal.ZERO : hasPayCount.divide(BigDecimal.valueOf(view.getDistributeUserNum()), 2, RoundingMode.HALF_DOWN));
-		}));
+		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
@@ -191,7 +209,7 @@ public class DistributeController {
 	 * 获取推广者分销订单详情
 	 */
 	@GetMapping("/get/distribute/order/detail")
-	public Result<SearchResult<DistributeOrdersDetailView>> getDistributeOrderDetail(HttpServletRequest request) {
+	public Result<SearchResult<DistributeOrdersDetailView>> getDistributeOrderDetail() {
 		SearchResult<DistributeOrdersDetailView> search = beanSearcher.search(DistributeOrdersDetailView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
@@ -200,7 +218,7 @@ public class DistributeController {
 	 * 新注册分销人数
 	 */
 	@GetMapping("/get/register/distribute/user")
-	public Result<SearchResult<RegisterDistributeOrdersView>> getRegisterDistributeUserDetail(HttpServletRequest request) {
+	public Result<SearchResult<RegisterDistributeOrdersView>> getRegisterDistributeUserDetail() {
 		SearchResult<RegisterDistributeOrdersView> search = beanSearcher.search(RegisterDistributeOrdersView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		search.getDataList().forEach(data -> {
 			List<RegisterDistributeOrdersDetailView> ordersDetailViewList = beanSearcher.searchAll(RegisterDistributeOrdersDetailView.class, MapUtils.builder().field(RegisterDistributeOrdersDetailView::getUserId, data.getUserId()).op(Operator.Equal).build());
@@ -220,7 +238,7 @@ public class DistributeController {
 	 * 获取新注册的分销用户订单数据
 	 */
 	@GetMapping("/get/register/distribute/user/order/detail")
-	public Result<SearchResult<RegisterDistributeOrdersDetailView>> getRegisterDistributeOrderDetail(HttpServletRequest request) {
+	public Result<SearchResult<RegisterDistributeOrdersDetailView>> getRegisterDistributeOrderDetail() {
 		SearchResult<RegisterDistributeOrdersDetailView> search = beanSearcher.search(RegisterDistributeOrdersDetailView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		search.getDataList().forEach(data -> {
 			User user = userMapper.selectById(data.getUserId());
@@ -270,7 +288,7 @@ public class DistributeController {
 	 */
 	@GetMapping("/get/applyMoney/list")
 	@SaCheckPermission("distribute:applyView")
-	public Result<SearchResult<DistributeMoneyApplyView>> applyMoneyList(HttpServletRequest request) {
+	public Result<SearchResult<DistributeMoneyApplyView>> applyMoneyList() {
 		SearchResult<DistributeMoneyApplyView> search = beanSearcher.search(DistributeMoneyApplyView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}