package com.ruoyi.account.controller; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.account.api.model.AgentApplication; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserChangeLog; import com.ruoyi.account.dto.AgentQuery; import com.ruoyi.account.api.model.VipSettingDto; import com.ruoyi.account.service.AgentApplicationService; import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.UserChangeLogService; import com.ruoyi.account.service.VipCenterService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.api.domain.VipSetting; import com.ruoyi.other.api.feignClient.BaseSettingClient; import com.ruoyi.other.api.feignClient.VipSettingClient; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** *

* 前端控制器 *

* * @author luodangjia * @since 2024-11-21 */ @RestController @RequestMapping("/agent-application") public class AgentApplicationController extends BaseController { @Resource private AgentApplicationService agentApplicationService; @Resource private AppUserService appUserService; @Resource private BaseSettingClient baseSettingClient; @Resource private VipCenterService vipCenterService; @PostMapping("/apply") @ApiOperation(value = "会员申请", tags = {"会员中心-小程序"}) public R apply(@RequestBody AgentApplication agentApplication) { agentApplicationService.apply(agentApplication); return R.ok(); } @PostMapping("/page") @ApiOperation(value = "会员申请列表", tags = {"后台"}) public R> page(@RequestBody AgentQuery agentQuery) { IPage agentApplicationIPage = agentApplicationService.pageList(agentQuery); for (AgentApplication record : agentApplicationIPage.getRecords()) { AppUser byId = appUserService.getById(record.getAppUserId()); if (byId!=null){ record.setVipId(byId.getVipId()); } } return R.ok(agentApplicationIPage); } @Resource private VipSettingClient vipSettingClient; @GetMapping("/detail") @ApiOperation(value = "会员申请详情", tags = {"会员中心-小程序"}) public R detail(@RequestParam Long id) { AgentApplication agentApplication = agentApplicationService.getById(id); R vipSetting = vipSettingClient.getVipSetting(agentApplication.getApplicationVipId()); VipSettingDto vipSettingDto = new VipSettingDto(); BeanUtils.copyProperties(vipSetting.getData(),vipSettingDto); agentApplication.setVipSettingDto(vipSettingDto); return R.ok(agentApplication); } @Resource private UserChangeLogService userChangeLogService; @GetMapping("/auth") @ApiOperation(value = "会员申请审核", tags = {"会员中心-小程序"}) public R auth(@RequestParam Long id, @ApiParam("2'已处理-同意',3'已处理-拒绝")Integer status,@ApiParam("处理意见") String remark) { AgentApplication byId = agentApplicationService.getById(id); byId.setStatus(status); byId.setRemark(remark); agentApplicationService.updateById(byId); AppUser byId1 = appUserService.getById(byId.getAppUserId()); //插入等级变化数据 UserChangeLog userChangeLog = new UserChangeLog(); userChangeLog.setCreateTime(LocalDateTime.now()); userChangeLog.setAppUserId(byId.getAppUserId()); userChangeLog.setBeforeVipId(byId1.getVipId()); userChangeLog.setAfterVipId(byId.getApplicationVipId()); if (userChangeLog.getBeforeVipId()>userChangeLog.getAfterVipId()) { userChangeLog.setChangeType(0); }else { userChangeLog.setChangeType(1); } userChangeLogService.save(userChangeLog); //变更会员等级 byId1.setVipId(byId.getApplicationVipId()); // 当用户为合伙人时,计算合伙人积分和培育积分 Integer vipId = byId1.getVipId(); if (vipId == 7){ R baseSetting = baseSettingClient.getBaseSetting(1); BaseSetting data = baseSetting.getData(); int basePoint = Integer.parseInt(data.getContent()); // 当前用户计算合伙人积分 R vipSetting = vipSettingClient.getVipSetting(vipId); Integer point = getPoint(vipSetting, byId1, basePoint); byId1.setPartPoint(point); // 上级计算培育积分 R baseSetting2 = baseSettingClient.getBaseSetting(1); BaseSetting data2 = baseSetting2.getData(); int basePoint2 = Integer.parseInt(data2.getContent()); Long inviteUserId = byId1.getInviteUserId(); AppUser byId2 = appUserService.getById(inviteUserId); if (byId2 != null){ Integer point1 = getPoint(vipSetting, byId2, basePoint2); byId2.setPartGrowPoint(point1); } } appUserService.updateById(byId1); return R.ok(byId); } private Integer getPoint(R vipSetting, AppUser appUser, Integer basePoint) { VipSetting vipSettingData = vipSetting.getData(); Integer vipLevelUpShopRole = vipSettingData.getVipLevelUpShopRole(); int i = 1; if (vipLevelUpShopRole == 1){ i += 1; } Integer vipLevelUpNumRole = vipSettingData.getVipLevelUpNumRole(); if (vipLevelUpNumRole == 1){ i += 1; } if (vipCenterService.checkReadyToBePartner(appUser.getId())){ return basePoint * i; } return 0; } }