puzhibing
2024-12-20 d60e946afb25dc8bd295a14e27a4ccf2df382283
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -34,10 +34,10 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import com.ruoyi.account.vo.*;
import com.ruoyi.common.core.web.controller.BaseController;
@@ -56,7 +56,6 @@
@RestController
@RequestMapping("/app-user")
public class AppUserController extends BaseController {
   @Resource
@@ -86,10 +85,6 @@
   public R<LoginVo> mobileLogin(@RequestBody MobileLogin mobileLogin){
      return appUserService.mobileLogin(mobileLogin);
   }
   @ResponseBody
@@ -141,15 +136,12 @@
   }
   @ResponseBody
   @PostMapping("/getSMSCode")
   @ApiOperation(value = "获取短信验证码")
   public R getSMSCode(@RequestBody SMSCode smsCode){
      return appUserService.getSMSCode(smsCode);
   }
   @ResponseBody
@@ -174,7 +166,6 @@
   }
   @ResponseBody
   @GetMapping("/getNearbyReferrer")
   @ApiOperation(value = "获取附近推荐人列表")
@@ -193,6 +184,7 @@
      AppUser user = appUserService.getById(userId);
      return R.ok(user);
   }
   @Resource
   private UserCancellationLogService userCancellationLogService;
@@ -212,7 +204,6 @@
      return R.ok();
   }
   @ResponseBody
@@ -276,7 +267,6 @@
   }
    @GetMapping("/index")
   @ApiOperation(value = "个人中心首页", tags = {"小程序-个人中心首页"})
   public R<AppUser> index(){
@@ -333,6 +323,7 @@
      appUserService.updateById(user);
      return R.ok();
   }
   /**
    * 获取用户的祖籍列表
    */
@@ -354,7 +345,6 @@
   }
   
   
   @ResponseBody
   @PostMapping("/onlineRecord")
   @ApiOperation(value = "10分钟定时任务调用,记录用户在线时长", tags = {"小程序-个人中心首页"})
@@ -364,11 +354,9 @@
   }
   
   
   /**
    * 根据用户名称模糊搜索用户列表
     *
    * @param name
    * @return
    */
@@ -381,6 +369,7 @@
   
   /**
    * 根据用户电话模糊搜索用户列表
     *
    * @param phone
    * @return
    */
@@ -398,8 +387,7 @@
   @ApiOperation(value = "用户列表", tags = {"管理后台"})
   public R<IPage<AppUser>> getAppuserPage(@ApiParam("页码") @RequestParam Integer pageNum,
                          @ApiParam("每一页数据大小") Integer pageSize,
                          AppUser appUser)
   {
                                            AppUser appUser) {
      IPage<AppUser> appuserPage = appUserService.getAppuserPage(pageNum, pageSize, appUser);
      return R.ok(appuserPage);
   }
@@ -408,8 +396,7 @@
   @ApiOperation(value = "用户列表", tags = {"门店后台"})
   public R<IPage<AppUser>> shopGetAppuserPage(@ApiParam("页码") @RequestParam Integer pageNum,
                                 @ApiParam("每一页数据大小") Integer pageSize,
                                 AppUser appUser)
   {
                                                AppUser appUser) {
      Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
      List<Long> userIds = new ArrayList<>();
@@ -424,11 +411,9 @@
   }
   @GetMapping("/danger/info")
   @ApiOperation(value = "用户列表-保级条件详情", tags = {"管理后台"})
   public R<DangerInfoDto> dangerinfo(Long id)
   {
    public R<DangerInfoDto> dangerinfo(Long id) {
      AppUser byId = appUserService.getById(id);
      LocalDate now = LocalDate.now();
      R<VipSetting> vipSetting = vipSettingClient.getVipSetting(byId.getVipId());
@@ -459,8 +444,7 @@
   @GetMapping("/danger/down")
   @ApiOperation(value = "用户列表-保级条件降级", tags = {"管理后台"})
   public R down(Long id)
   {
    public R down(Long id) {
      AppUser byId = appUserService.getById(id);
      byId.setVipId(byId.getVipId()-1);
      appUserService.updateById(byId);
@@ -476,10 +460,10 @@
      ).start();
      return R.ok();
   }
   @GetMapping("/frozen")
   @ApiOperation(value = "用户列表-冻结解冻", tags = {"管理后台"})
   public R frozen(Long id,@ApiParam("1=正常,2=冻结")Integer status)
   {
    public R frozen(Long id, @ApiParam("1=正常,2=冻结") Integer status) {
      AppUser byId = appUserService.getById(id);
      byId.setStatus(status);
      appUserService.updateById(byId);
@@ -488,8 +472,7 @@
   @GetMapping("/select")
   @ApiOperation(value = "用户列表-查询绑定人", tags = {"管理后台"})
   public R<AppUser> select(String phone)
   {
    public R<AppUser> select(String phone) {
      AppUser byId = appUserService.lambdaQuery().eq(AppUser::getPhone,phone).one();
      if (byId==null){
         return R.fail("搜索失败,手机号错误。");
@@ -499,18 +482,17 @@
   @GetMapping("/change/bind")
   @ApiOperation(value = "用户列表-更换绑定人", tags = {"管理后台"})
   public R<AppUser> select(Long id,Long inviteId)
   {
    public R<AppUser> select(Long id, Long inviteId) {
      AppUser byId = appUserService.getById(id);
      byId.setInviteUserId(inviteId);
      byId.setTopInviteId(getTop(inviteId));
      appUserService.updateById(byId);
      return R.ok();
   }
   @GetMapping("/change/shop")
   @ApiOperation(value = "用户列表-更换门店", tags = {"管理后台"})
   public R<AppUser> shop(Long id,Long shopId)
   {
    public R<AppUser> shop(Long id, Long shopId) {
      AppUser byId = appUserService.getById(id);
      byId.setShopId(shopId);
      appUserService.updateById(byId);
@@ -528,9 +510,6 @@
   }
   @Resource
   private ShopClient shopClient;
   @Resource
@@ -538,8 +517,7 @@
   @GetMapping("/detail")
   @ApiOperation(value = "用户列表-详情", tags = {"管理后台"})
   public R<AppUser> detail(Long id)
   {
    public R<AppUser> detail(Long id) {
      AppUser byId = appUserService.getById(id);
      if (byId.getShopId()!=null) {
         R<Shop> shopById = shopClient.getShopById(Integer.parseInt(String.valueOf(byId.getShopId())));
@@ -571,10 +549,10 @@
   @Resource
   private UserChangeLogService userChangeLogService;
   @GetMapping("/change/vip")
   @ApiOperation(value = "用户列表-修改会员等级", tags = {"管理后台"})
   public R<Page<AppUser>> changevip(Long id,Integer vipId)
   {
    public R<Page<AppUser>> changevip(Long id, Integer vipId) {
      AppUser byId = appUserService.getById(id);
      UserChangeLog userChangeLog = new UserChangeLog();
@@ -596,8 +574,7 @@
   @GetMapping("/bottom")
   @ApiOperation(value = "用户列表-绑定下级列表", tags = {"管理后台"})
   public R<Page<AppUser>> bottom(Long id,Integer pageNum,Integer pageSize)
   {
    public R<Page<AppUser>> bottom(Long id, Integer pageNum, Integer pageSize) {
      //绑定下级
      Page<AppUser> page = appUserService.lambdaQuery().eq(AppUser::getInviteUserId, id).page(Page.of(pageNum, pageSize));
      return R.ok(page);
@@ -606,18 +583,11 @@
   @GetMapping("/orders")
   @ApiOperation(value = "用户列表-订单列表", tags = {"管理后台"})
   public R<List<Order>> orders(Long id)
   {
    public R<List<Order>> orders(Long id) {
      R<List<Order>> listR = remoteOrderGoodsClient.byUserId(id);
      return R.ok(listR.getData());
   }
   @GetMapping("/listByIds")
@@ -625,7 +595,6 @@
      List<AppUser> appUsers = appUserService.listByIds(ids);
      return appUsers;
   }
   
   
   @PostMapping("/getAppUserByPhone1")
@@ -655,5 +624,51 @@
      return R.ok(userStatisticsDetail);
   }
    /**
     * 分佣统计明细
     */
    @GetMapping("/commissionDetail")
    @ApiOperation(value = "分佣统计", tags = "管理后台-首页统计")
    public R<CommissionDetail> commissionDetail(BalanceChangeRecord balanceChangeRecord) {
        List<AppUser> appUserList = Optional.ofNullable(appUserService.list()).orElse(Collections.emptyList());
        if (appUserList.isEmpty()) {
            return R.ok(new CommissionDetail());
        }
        BigDecimal totalCommission = BigDecimal.ZERO;
        BigDecimal totalServiceFee = BigDecimal.ZERO;
        BigDecimal totalUserCommission = BigDecimal.ZERO;
        Map<Integer, BigDecimal> vipCommissions = new HashMap<>();
        for (AppUser appUser : appUserList) {
            totalCommission = totalCommission.add(Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO));
            totalServiceFee = totalServiceFee.add(Optional.ofNullable(appUser.getShopServiceFee()).orElse(BigDecimal.ZERO));
            totalUserCommission = totalUserCommission.add(Optional.ofNullable(appUser.getShopCommission()).orElse(BigDecimal.ZERO));
            Integer vipId = appUser.getVipId();
            if (vipId != null && vipId >= 1 && vipId <= 7) {
                vipCommissions.merge(vipId, Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO), BigDecimal::add);
            }
        }
        CommissionDetail commissionDetail = new CommissionDetail();
        commissionDetail.setTotalCommission(totalCommission);
        commissionDetail.setTotalServiceFee(totalServiceFee);
        commissionDetail.setTotalUserCommission(totalUserCommission);
        commissionDetail.setTotalNormalCommission(vipCommissions.getOrDefault(1, BigDecimal.ZERO));
        commissionDetail.setTotalGoldCommission(vipCommissions.getOrDefault(2, BigDecimal.ZERO));
        commissionDetail.setTotalDiamondCommission(vipCommissions.getOrDefault(3, BigDecimal.ZERO));
        commissionDetail.setTotalAgentCommission(vipCommissions.getOrDefault(4, BigDecimal.ZERO));
        commissionDetail.setTotalSuperAgentCommission(vipCommissions.getOrDefault(5, BigDecimal.ZERO));
        commissionDetail.setTotalTopAgentCommission(vipCommissions.getOrDefault(6, BigDecimal.ZERO));
        commissionDetail.setTotalPartnerCommission(vipCommissions.getOrDefault(7, BigDecimal.ZERO));
        return R.ok(commissionDetail);
    }
}