package com.yeshi.makemoney.app.controller.client.api;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.ks.lib.common.exception.ParamsException;
|
import com.yeshi.makemoney.app.dto.money.ExtractConfig;
|
import com.yeshi.makemoney.app.entity.config.SystemConfigKey;
|
import com.yeshi.makemoney.app.entity.money.Extract;
|
import com.yeshi.makemoney.app.entity.money.ExtractPayType;
|
import com.yeshi.makemoney.app.entity.user.UserInfo;
|
import com.yeshi.makemoney.app.entity.user.WXUserInfo;
|
import com.yeshi.makemoney.app.exception.money.ExtractException;
|
import com.yeshi.makemoney.app.exception.money.UserExtractMoneyLimitException;
|
import com.yeshi.makemoney.app.exception.money.UserMoneyBalanceException;
|
import com.yeshi.makemoney.app.service.inter.config.SystemConfigService;
|
import com.yeshi.makemoney.app.service.inter.money.ExtractService;
|
import com.yeshi.makemoney.app.service.inter.money.UserExtractMoneyLimitService;
|
import com.yeshi.makemoney.app.service.inter.money.UserMoneyService;
|
import com.yeshi.makemoney.app.service.inter.user.WXUserInfoService;
|
import com.yeshi.makemoney.app.utils.ApiCodeConstant;
|
import com.yeshi.makemoney.app.utils.Constant;
|
import com.yeshi.makemoney.app.utils.annotation.UserLogin;
|
import com.yeshi.makemoney.app.vo.AcceptData;
|
import com.yeshi.makemoney.app.vo.user.ExtractDenominationVO;
|
import com.yeshi.makemoney.app.vo.user.ExtractInfoVO;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.yeshi.utils.BigDecimalUtil;
|
import org.yeshi.utils.IPUtil;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.StringUtil;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author hxh
|
* @title: ConfigController
|
* @description: 提现接口
|
* @date 2021/11/16 17:37
|
*/
|
@Controller
|
@RequestMapping("api/v1/extract")
|
public class ExtractController {
|
@Resource
|
private UserMoneyService userMoneyService;
|
|
@Resource
|
private WXUserInfoService wxUserInfoService;
|
|
@Resource
|
private ExtractService extractService;
|
|
@Resource
|
private UserExtractMoneyLimitService userExtractMoneyLimitService;
|
|
private Gson gson = JsonUtil.getConvertBigDecimalToStringBuilder(new GsonBuilder()).create();
|
|
/**
|
* @return java.lang.String
|
* @author hxh
|
* @description 提现信息(包括余额,提现中的资金,是否绑定微信)
|
* @date 13:15 2021/12/2
|
* @param: acceptData
|
**/
|
@UserLogin(uid = "#uid")
|
@RequestMapping("getExtractInfo")
|
@ResponseBody
|
public String getExtractInfo(AcceptData acceptData, Long uid) {
|
ExtractInfoVO vo = new ExtractInfoVO();
|
vo.setBalance(userMoneyService.getBalance(uid).setScale(2));
|
BigDecimal extracting = extractService.getExtractingMoney(uid);
|
if (extracting.compareTo(new BigDecimal(0)) > 0) {
|
vo.setExtracting(extracting.setScale(2).toString());
|
}
|
vo.setNeedBindWX(wxUserInfoService.selectByUid(uid) == null);
|
return JsonUtil.loadTrueResult(gson.toJson(vo));
|
}
|
|
/**
|
* @return java.lang.String
|
* @author hxh
|
* @description 获取提现面额
|
* @date 17:46 2022/4/20
|
* @param: acceptData
|
* @param: uid
|
**/
|
@UserLogin(uid = "#uid")
|
@RequestMapping("getExtractDenominationList")
|
@ResponseBody
|
public String getExtractDenominationList(AcceptData acceptData, Long uid) {
|
ExtractConfig config = extractService.getExtractConfig(acceptData.getSystem());
|
boolean isNewer = false;
|
long count = extractService.countByMaxMoney(uid, Constant.EXTRACT_LITTLE_MONEY_LIMIT, Arrays.asList(new Integer[]{Extract.STATE_NOT_PROCESS, Extract.STATE_PROCESSING, Extract.STATE_PASS}), null);
|
if (config.getNewerLittleMoneyNum() > count) {
|
//有新用户机会
|
isNewer = true;
|
}
|
|
List<ExtractDenominationVO> voList = new ArrayList<>();
|
for (BigDecimal money : config.getExtractMoneyList()) {
|
ExtractDenominationVO vo = new ExtractDenominationVO();
|
vo.setMoney(BigDecimalUtil.getWithNoZera(money));
|
if (money.compareTo(Constant.EXTRACT_LITTLE_MONEY_LIMIT) < 0 && isNewer) {
|
vo.setTag("新用户福利");
|
}
|
voList.add(vo);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("list", gson.toJson(voList));
|
return JsonUtil.loadTrueResult(data);
|
}
|
|
@UserLogin(uid = "#uid")
|
@RequestMapping("extract")
|
@ResponseBody
|
public String extract(AcceptData acceptData, Long uid, BigDecimal money, HttpServletRequest request) {
|
WXUserInfo wxUserInfo = wxUserInfoService.selectByUid(uid);
|
if (wxUserInfo == null) {
|
return JsonUtil.loadFalseResult("尚未绑定微信");
|
}
|
|
Extract extract = new Extract();
|
extract.setUser(new UserInfo(uid));
|
extract.setIp(IPUtil.getRemotIP(request) + ":" + request.getRemotePort());
|
extract.setMoney(money);
|
extract.setType(ExtractPayType.wx);
|
extract.setAccount(wxUserInfo.getOpenId());
|
|
try {
|
extractService.addExtract(extract);
|
} catch (ParamsException e) {
|
return JsonUtil.loadFalseResult(e.getMessage());
|
} catch (ExtractException e) {
|
e.printStackTrace();
|
if (e.getCode() == ExtractException.CODE_MONEY_LIMIT) {
|
return JsonUtil.loadFalseResult(e.getMessage());
|
} else if (e.getCode() == ExtractException.CODE_LITTLE_MONEY_LIMIT) {
|
return JsonUtil.loadFalseResult(ApiCodeConstant.CODE_NEED_WATCH_REWARD_VIDEO, "小金额提现机会已使用完");
|
} else {
|
return JsonUtil.loadFalseResult("未知错误,请稍后再试");
|
}
|
} catch (UserMoneyBalanceException e) {
|
return JsonUtil.loadFalseResult("账户余额不足");
|
}
|
|
return JsonUtil.loadTrueResult("");
|
}
|
|
|
/**
|
* @return java.lang.String
|
* @author hxh
|
* @description 增加小金额提现的次数限制
|
* @date 18:26 2022/4/20
|
* @param: acceptData
|
* @param: uid
|
**/
|
@UserLogin(uid = "#uid")
|
@RequestMapping("addLittleMoneyExtractTimes")
|
@ResponseBody
|
public String addLittleMoneyExtractTimes(AcceptData acceptData, Long uid) {
|
try {
|
userExtractMoneyLimitService.addLittleMoneyLimit(uid, 1, new Date());
|
} catch (UserExtractMoneyLimitException e) {
|
e.printStackTrace();
|
return JsonUtil.loadFalseResult("增加次数出错");
|
}
|
|
return JsonUtil.loadTrueResult("");
|
}
|
|
|
}
|