|
|
|
package com.zhonglai.luhui.openai.controller;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
import cn.hutool.core.lang.Validator;
|
|
|
|
import com.ruoyi.common.config.RuoYiConfig;
|
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
|
|
|
import com.ruoyi.common.utils.file.FileUtils;
|
|
...
|
...
|
@@ -11,17 +14,19 @@ import com.ruoyi.framework.config.ServerConfig; |
|
|
|
import com.ruoyi.system.login.dto.OpenAiLoginUser;
|
|
|
|
import com.ruoyi.system.login.dto.OpenAiUserInfo;
|
|
|
|
import com.ruoyi.system.service.PublicService;
|
|
|
|
import com.zhonglai.luhui.openai.dto.CompletionChoiceMessage3_5;
|
|
|
|
import com.zhonglai.luhui.openai.dto.UserFlowPacketRemainLog;
|
|
|
|
import com.zhonglai.luhui.openai.service.VipServiceImpl;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
|
|
import io.swagger.annotations.ApiImplicitParams;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
...
|
...
|
@@ -37,6 +42,9 @@ public class UserInfoController extends BaseController { |
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private PublicService publicService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private VipServiceImpl vipService;
|
|
|
|
@ApiOperation("获取用户信息")
|
|
|
|
@GetMapping("/getUserInfo")
|
|
|
|
public AjaxResult getUserInfo()
|
|
...
|
...
|
@@ -84,7 +92,7 @@ public class UserInfoController extends BaseController { |
|
|
|
public TableDataInfo useFlowPacketRemainLog()
|
|
|
|
{
|
|
|
|
startPage();
|
|
|
|
List<Map<String,Object>> list = publicService.getObjectListBySQL("SELECT * FROM `lk_openai`.`user_flow_packet_remain_log` WHERE `user_id`="+getUserId().intValue()+" and `type`=2 order by create_time desc");
|
|
|
|
List<Map<String,Object>> list = publicService.getObjectListBySQL("SELECT * FROM `lk_openai`.`user_flow_packet_remain_log` WHERE `user_id`="+getUserId().intValue()+" and (`type`=2 or `type`=3) order by create_time desc");
|
|
|
|
return getDataTable(list);
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -137,4 +145,127 @@ public class UserInfoController extends BaseController { |
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("代币代充")
|
|
|
|
@ApiImplicitParams({
|
|
|
|
@ApiImplicitParam(value = "需要充值的手机号",name = "phone"),
|
|
|
|
@ApiImplicitParam(value = "充值代币数量",name = "number")
|
|
|
|
})
|
|
|
|
@Transactional
|
|
|
|
@PostMapping("/agencyCharge/{phone}/{number}")
|
|
|
|
public AjaxResult agencyCharge(@PathVariable String phone,@PathVariable Long number)
|
|
|
|
{
|
|
|
|
if(!Validator.isMobile(phone))
|
|
|
|
{
|
|
|
|
return AjaxResult.error("请输入正确的手机号");
|
|
|
|
}
|
|
|
|
|
|
|
|
if(null == number || number<=0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("充值代币数量不合法");
|
|
|
|
}
|
|
|
|
List<Map<String,Object>> userList = publicService.getObjectListBySQL("SELECT * FROM `lk_openai`.`user_info` WHERE phone='"+phone+"'");
|
|
|
|
if(null == userList || userList.size()==0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("用户没有登陆,请提现用户使用手机号登陆以后,再充值");
|
|
|
|
}
|
|
|
|
|
|
|
|
OpenAiUserInfo myOpenAiUserInfo = publicService.getObjectForTableName(OpenAiUserInfo.class,"id",getUserId().toString(),"`lk_openai`.`user_info`");
|
|
|
|
if(myOpenAiUserInfo.getFlow_packet_remain()-number<=0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("您的余额不足请先为您自己充值");
|
|
|
|
}
|
|
|
|
if(myOpenAiUserInfo.getRole()-1!=0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("您不是代理商请先升级成代理商");
|
|
|
|
}
|
|
|
|
|
|
|
|
BigDecimal[] bs = vipService.getUnitprice();
|
|
|
|
BigDecimal openaiUnitprice = bs[0];
|
|
|
|
BigDecimal realityUnitprice = bs[1];
|
|
|
|
if(openaiUnitprice.doubleValue()==0 || realityUnitprice.doubleValue()==0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("系统未配置流量单价,请联系管理员");
|
|
|
|
}
|
|
|
|
|
|
|
|
//减去自己的余额
|
|
|
|
publicService.updateBySql("UPDATE `lk_openai`.`user_info` SET flow_packet_remain=flow_packet_remain-"+number+" WHERE id="+myOpenAiUserInfo.getId());
|
|
|
|
UserFlowPacketRemainLog userFlowPacketRemainLog = new UserFlowPacketRemainLog();
|
|
|
|
userFlowPacketRemainLog.setCreate_time(DateUtils.getNowTimeMilly());
|
|
|
|
userFlowPacketRemainLog.setUser_id(myOpenAiUserInfo.getId());
|
|
|
|
userFlowPacketRemainLog.setType(3); //消费
|
|
|
|
|
|
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
|
|
stringBuffer.append("为手机号:");
|
|
|
|
stringBuffer.append(phone);
|
|
|
|
stringBuffer.append(" 的用户代充:");
|
|
|
|
stringBuffer.append(number);
|
|
|
|
stringBuffer.append(" 代币");
|
|
|
|
stringBuffer.append(";");
|
|
|
|
stringBuffer.append("剩余代币: ");
|
|
|
|
stringBuffer.append(myOpenAiUserInfo.getFlow_packet_remain()-number);
|
|
|
|
stringBuffer.append(" ;");
|
|
|
|
userFlowPacketRemainLog.setDescribe(stringBuffer.toString());
|
|
|
|
userFlowPacketRemainLog.setTotal_tokens(number);
|
|
|
|
userFlowPacketRemainLog.setOpenai_money((openaiUnitprice.multiply(new BigDecimal(userFlowPacketRemainLog.getTotal_tokens()))).divide(new BigDecimal(1000),6,BigDecimal.ROUND_HALF_UP));
|
|
|
|
userFlowPacketRemainLog.setReality_money((realityUnitprice.multiply(new BigDecimal(userFlowPacketRemainLog.getTotal_tokens()))).divide(new BigDecimal(1000),6,BigDecimal.ROUND_HALF_UP));
|
|
|
|
publicService.insertToTable(userFlowPacketRemainLog,"`lk_openai`.`user_flow_packet_remain_log`");
|
|
|
|
|
|
|
|
OpenAiUserInfo openAiUserInfo = BeanUtil.mapToBean(userList.get(0),OpenAiUserInfo.class,null);
|
|
|
|
//添加客户的余额,和总额
|
|
|
|
publicService.updateBySql("UPDATE `lk_openai`.`user_info` SET flow_packet_remain=flow_packet_remain+"+number+",flow_packet_total=flow_packet_total+"+number+" WHERE id="+openAiUserInfo.getId());
|
|
|
|
|
|
|
|
userFlowPacketRemainLog = new UserFlowPacketRemainLog();
|
|
|
|
userFlowPacketRemainLog.setCreate_time(DateUtils.getNowTimeMilly());
|
|
|
|
userFlowPacketRemainLog.setUser_id(openAiUserInfo.getId());
|
|
|
|
userFlowPacketRemainLog.setType(3); //消费
|
|
|
|
stringBuffer = new StringBuffer();
|
|
|
|
stringBuffer.append("代理商");
|
|
|
|
stringBuffer.append(myOpenAiUserInfo.getNickname());
|
|
|
|
stringBuffer.append("手机号:");
|
|
|
|
stringBuffer.append(myOpenAiUserInfo.getPhone());
|
|
|
|
stringBuffer.append(" 为您充值代币: ");
|
|
|
|
stringBuffer.append(number);
|
|
|
|
stringBuffer.append(" ;");
|
|
|
|
|
|
|
|
userFlowPacketRemainLog.setDescribe(stringBuffer.toString());
|
|
|
|
userFlowPacketRemainLog.setTotal_tokens(number);
|
|
|
|
|
|
|
|
userFlowPacketRemainLog.setOpenai_money((openaiUnitprice.multiply(new BigDecimal(userFlowPacketRemainLog.getTotal_tokens()))).divide(new BigDecimal(1000),6,BigDecimal.ROUND_HALF_UP));
|
|
|
|
userFlowPacketRemainLog.setReality_money((realityUnitprice.multiply(new BigDecimal(userFlowPacketRemainLog.getTotal_tokens()))).divide(new BigDecimal(1000),6,BigDecimal.ROUND_HALF_UP));
|
|
|
|
publicService.insertToTable(userFlowPacketRemainLog,"`lk_openai`.`user_flow_packet_remain_log`");
|
|
|
|
return AjaxResult.success("充值成功!");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("升级为代理商")
|
|
|
|
@ApiImplicitParams({
|
|
|
|
@ApiImplicitParam(value = "推荐码",name = "promo_code"),
|
|
|
|
})
|
|
|
|
@Transactional
|
|
|
|
@PostMapping("/agencyCharge/{promo_code}")
|
|
|
|
public AjaxResult agencyCharge(@PathVariable String promo_code)
|
|
|
|
{
|
|
|
|
OpenAiUserInfo myOpenAiUserInfo = publicService.getObjectForTableName(OpenAiUserInfo.class,"id",getUserId().toString(),"`lk_openai`.`user_info`");
|
|
|
|
if(myOpenAiUserInfo.getRole()-1==0)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("您已经是代理商,无法重复申请");
|
|
|
|
}
|
|
|
|
|
|
|
|
OpenAiUserInfo pOpenAiUserInfo = publicService.getObjectForTableName(OpenAiUserInfo.class,"promo_code",promo_code,"`lk_openai`.`user_info`");
|
|
|
|
if(null == pOpenAiUserInfo || pOpenAiUserInfo.getRole()-1!=0 || pOpenAiUserInfo.getState()==0 ||pOpenAiUserInfo.getState()==2)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("该代理商不存在或者已被禁止");
|
|
|
|
}
|
|
|
|
|
|
|
|
OpenAiUserInfo upadduser = new OpenAiUserInfo();
|
|
|
|
upadduser.setId(myOpenAiUserInfo.getId());
|
|
|
|
upadduser.setPromo_code(Integer.toHexString((myOpenAiUserInfo.getId()+":"+DateUtils.getNowTimeMilly()).hashCode()).toUpperCase());
|
|
|
|
upadduser.setRole(1);
|
|
|
|
upadduser.setPid(pOpenAiUserInfo.getId());
|
|
|
|
return AjaxResult.success(publicService.updateObjectByTable(upadduser,"id","`lk_openai`.`user_info`"));
|
|
|
|
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|