|
@@ -1,16 +1,32 @@
|
|
|
package com.game.business.controller;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.game.business.domain.AppUser;
|
|
|
+import com.game.business.domain.FinTranRecord;
|
|
|
import com.game.business.dto.AppUserDividendListDto;
|
|
|
import com.game.business.dto.AppUserDividendSendDto;
|
|
|
+import com.game.business.service.IAppUserService;
|
|
|
+import com.game.business.service.IFinTranRecordService;
|
|
|
+import com.game.common.constant.AppSceneType;
|
|
|
+import com.game.common.constant.finance.FinTranAddedInfo;
|
|
|
+import com.game.common.constant.finance.FinTranType1;
|
|
|
+import com.game.common.constant.finance.FinTranType3;
|
|
|
+import com.game.common.constant.finance.TranCurrencyType;
|
|
|
import com.game.common.core.domain.HttpRet;
|
|
|
import com.game.common.core.domain.HttpRetPageArr;
|
|
|
import com.game.common.core.domain.R;
|
|
|
import com.game.common.utils.SecurityUtils;
|
|
|
+import com.game.common.utils.StringUtils;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.PutMapping;
|
|
@@ -44,6 +60,12 @@ public class AppUserCountDividendController extends BaseController
|
|
|
@Autowired
|
|
|
private IAppUserCountDividendService appUserCountDividendService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IAppUserService appUserService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IFinTranRecordService finTranRecordService;
|
|
|
+
|
|
|
|
|
|
* 查询用户代理分红列表
|
|
|
*/
|
|
@@ -61,10 +83,73 @@ public class AppUserCountDividendController extends BaseController
|
|
|
*/
|
|
|
@PostMapping("/send")
|
|
|
@ApiOperation(value = "发放分红", notes = "发放分红")
|
|
|
+ @Transactional
|
|
|
public HttpRet<Boolean> send(AppUserDividendSendDto dto)
|
|
|
{
|
|
|
-
|
|
|
- return appUserCountDividendService.send(dto.getUserId(),dto.getDateNum());
|
|
|
+ String userId = dto.getUserId();
|
|
|
+ String dateNo = dto.getDateNum();
|
|
|
+ if(null == userId && StringUtils.isBlank(dateNo)){
|
|
|
+ return HttpRet.fail("发放失败,参数为空");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<AppUserCountDividend> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if(StringUtils.isNotBlank(dateNo)){
|
|
|
+ queryWrapper.eq(AppUserCountDividend::getDateNo,dateNo);
|
|
|
+ }
|
|
|
+ if(null != userId){
|
|
|
+ queryWrapper.eq(AppUserCountDividend::getUserId,userId);
|
|
|
+ }
|
|
|
+ queryWrapper.eq(AppUserCountDividend::getStatus,0);
|
|
|
+ List<AppUserCountDividend> dividendList = appUserCountDividendService.list(queryWrapper);
|
|
|
+ if(null == dividendList || dividendList.size() < 1){
|
|
|
+ return HttpRet.fail("发放失败,不存在或已发放");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> ids = dividendList.stream().map(AppUserCountDividend::getUserId).collect(Collectors.toList());
|
|
|
+ List<AppUser> userList = appUserService.selectListByIds(ids);
|
|
|
+ if(null != userList && userList.size()>0) {
|
|
|
+ Map<String, AppUser> userMap = userList.stream().collect(Collectors.toMap(e -> String.valueOf(e.getUserid()), Function.identity(), (k1, k2) -> k2));
|
|
|
+ dividendList.forEach(e->{
|
|
|
+ List<FinTranRecord> tranRecordList = new ArrayList<>();
|
|
|
+ AppUser appUser = userMap.get(String.valueOf(e.getUserId()));
|
|
|
+ AppUser updateAppUser = new AppUser();
|
|
|
+ updateAppUser.setUserid(appUser.getUserid());
|
|
|
+ if(null != e.getDiamondCoin() && e.getDiamondCoin()>0){
|
|
|
+ updateAppUser.setDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
|
|
|
+ updateAppUser.setDiamondCoinTotal(appUser.getDiamondCoinTotal() + e.getDiamondCoin());
|
|
|
+ updateAppUser.setDiamondCoinCash(updateAppUser.getDiamondCoinCash() + e.getDiamondCoin());
|
|
|
+
|
|
|
+ FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
|
|
|
+ FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Diamond_Coin, appUser);
|
|
|
+ tran.setDiamondCoinChange(e.getDiamondCoin());
|
|
|
+ tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
|
|
|
+ tran.setCurrencyType(TranCurrencyType.Balance.getType());
|
|
|
+ tranRecordList.add(tran);
|
|
|
+ }
|
|
|
+ if(null != e.getCoin() && e.getCoin()>0){
|
|
|
+ updateAppUser.setCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
|
|
|
+
|
|
|
+ FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
|
|
|
+ FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Coin, appUser);
|
|
|
+ tran.setDiamondCoinChange(e.getDiamondCoin());
|
|
|
+ tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
|
|
|
+ tran.setCurrencyType(TranCurrencyType.Coin.getType());
|
|
|
+ tranRecordList.add(tran);
|
|
|
+ }
|
|
|
+ appUserService.updateAppUser(updateAppUser);
|
|
|
+ if(tranRecordList.size() > 0){
|
|
|
+ tranRecordList.forEach(t->{
|
|
|
+ finTranRecordService.insertFinTranRecord(t);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ AppUserCountDividend userCountDividend = new AppUserCountDividend();
|
|
|
+ userCountDividend.setId(e.getId());
|
|
|
+ userCountDividend.setStatus(1);
|
|
|
+ appUserCountDividendService.updateAppUserCountDividend(userCountDividend);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return HttpRet.success("发放成功",true);
|
|
|
+
|
|
|
+ return appUserCountDividendService.send(dto.getUserId(),dto.getDateNum());*/
|
|
|
}
|
|
|
|
|
|
}
|