管理员系统功能添加

This commit is contained in:
2024-08-05 15:19:02 +08:00
parent 1093ac68b6
commit ea4ba74989
8 changed files with 434 additions and 50 deletions

View File

@@ -4,14 +4,16 @@ package com.ai.da.controller;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.response.Response;
import com.ai.da.mapper.primary.DesignMapper;
import com.ai.da.mapper.primary.TrialOrderMapper;
import com.ai.da.mapper.primary.entity.Account;
import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.AccountAddDTO;
import com.ai.da.model.dto.UserDesignStatisticDTO;
import com.ai.da.model.vo.QuestionnaireFeedbackVO;
import com.ai.da.model.vo.QuestionnaireVO;
import com.ai.da.model.vo.QueryUserConditionsVO;
import com.ai.da.service.ConvenientInquiryService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.netty.util.internal.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Nullable;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -29,43 +32,37 @@ import java.util.*;
@RestController
@RequestMapping("/api/inquiry")
public class ConvenientInquiryController {
@Resource
private TrialOrderMapper trialOrderMapper;
@Resource
private DesignMapper designMapper;
@Resource
private ConvenientInquiryService convenientInquiryService;
@ApiOperation("获取当前所有试用用户")
@GetMapping("/getTrial")
public Response<List<TrialOrder>> getTrial(){
@PostMapping("/getTrial")
public Response<IPage<TrialOrder>> getTrial(@Valid @RequestBody QueryUserConditionsVO queryUserConditionsVO) {
Long accountId = UserContext.getUserHolder().getId();
if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)){
List<TrialOrder> trialOrders = trialOrderMapper.selectList(null);
return Response.success(trialOrders);
}else {
if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)) {
return Response.success(convenientInquiryService.getTrial(queryUserConditionsVO));
} else {
return Response.fail("Sorry, you don't have permission");
}
}
@ApiOperation("获取指定时间区间内所有用户design的使用情况")
@GetMapping("/getDesignStatistic")
public Response<List<UserDesignStatisticDTO>> getDesignStatistic(@RequestParam String startTime,@RequestParam String endTime){
public Response<List<UserDesignStatisticDTO>> getDesignStatistic(@RequestParam String startTime, @RequestParam String endTime) {
Long accountId = UserContext.getUserHolder().getId();
if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)){
if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)) {
if (StringUtil.isNullOrEmpty(startTime)) startTime = "2024-02-01 00:00:00";
if (StringUtil.isNullOrEmpty(endTime)){
if (StringUtil.isNullOrEmpty(endTime)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
endTime = simpleDateFormat.format(date);
}
List<UserDesignStatisticDTO> designStatistic = designMapper.getDesignStatistic(startTime, endTime);
return Response.success(designStatistic);
}else {
} else {
return Response.fail("Sorry, you don't have permission");
}
}
@@ -74,57 +71,101 @@ public class ConvenientInquiryController {
//调查问卷
@ApiOperation("获取调查问卷统计详情")
@GetMapping("/getQuestionnaireStatistic")
public Response<QuestionnaireFeedbackVO> getQuestionnaire(){
public Response<QuestionnaireFeedbackVO> getQuestionnaire() {
return Response.success(convenientInquiryService.getQuestionnaireInfo());
}
@ApiOperation("获取所有调查问卷")
@GetMapping("/getAllQuestionnaire")
public Response<List<QuestionnaireVO>> getAllQuestionnaire(){
public Response<List<QuestionnaireVO>> getAllQuestionnaire() {
return Response.success(convenientInquiryService.getAllQuestionnaire());
}
@ApiOperation("获取近期新用户")
@PostMapping("/recentNewUser")
@GetMapping("/recentNewUser")
public Response<IPage<Account>> recentNewUser(@ApiParam(value = "startTime") @RequestParam @Nullable String startTime,
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("userType") @RequestParam String userType,
@ApiParam("pageNum") @RequestParam int pageNum,
@ApiParam("size") @RequestParam int size){
return Response.success(convenientInquiryService.recentNewUser(startTime, endTime, userType, pageNum, size));
@ApiParam("userType visitor/trial/official") @RequestParam String userType,
@ApiParam("page") @RequestParam int page,
@ApiParam("size") @RequestParam int size) {
return Response.success(convenientInquiryService.recentNewUser(startTime, endTime, userType, page, size));
}
@ApiOperation("获取近期新用户图表数据")
@PostMapping("/recentNewUserChart")
@GetMapping("/recentNewUserChart")
public Response<Map<String, Object>> recentNewUserChart(@ApiParam(value = "startTime") @RequestParam @Nullable String startTime,
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("userType") @RequestParam String userType){
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("userType") @RequestParam String userType) {
return Response.success(convenientInquiryService.recentNewUserChart(startTime, endTime, userType));
}
@ApiOperation("获取近期活跃用户")
@PostMapping("/recentActiveUser")
@GetMapping("/recentActiveUser")
public Response<IPage<Account>> recentActiveUser(@ApiParam(value = "startTime") @RequestParam @Nullable String startTime,
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("pageNum") @RequestParam int pageNum,
@ApiParam("size") @RequestParam int size){
return Response.success(convenientInquiryService.recentActiveUser(startTime, endTime, pageNum, size));
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("pageNum") @RequestParam int page,
@ApiParam("size") @RequestParam int size) {
return Response.success(convenientInquiryService.recentActiveUser(startTime, endTime, page, size));
}
@ApiOperation("获取近期活跃用户图表数据")
@PostMapping("/recentActiveUserChart")
@GetMapping("/recentActiveUserChart")
public Response<Integer> recentActiveUserChart(@ApiParam(value = "startTime") @RequestParam @Nullable String startTime,
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime){
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime) {
return Response.success(convenientInquiryService.recentActiveUserChart(startTime, endTime));
}
@ApiOperation("获取用户的各模块功能使用详情")
@PostMapping("/getActiveUserFunc")
@GetMapping("/getActiveUserFunc")
public Response<Map<String, List<Object>>> getActiveUserFunc(@ApiParam(value = "startTime") @RequestParam @Nullable String startTime,
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("userIdList") @RequestParam List<Long> userIdList){
@ApiParam(value = "endTime") @RequestParam @Nullable String endTime,
@ApiParam("userIdList") @RequestParam @Nullable List<Long> userIdList) {
return Response.success(convenientInquiryService.getActiveUserFunc(startTime, endTime, userIdList));
}
@ApiOperation("试用用户到正式用户的转化率")
@GetMapping("/conversionRate")
public Response<Map<String, Float>> conversionRate() {
return Response.success(convenientInquiryService.conversionRate());
}
@ApiOperation("试用用户国家/城市分布")
@GetMapping("/trialUserCountry")
public Response<Map<String, List<Object>>> trialUserCountry() {
return Response.success(convenientInquiryService.trialUserCountry());
}
@ApiOperation("添加用户")
@PostMapping("/addUser")
public Response<Boolean> addUser(@Valid @RequestBody AccountAddDTO accountAddDTO) {
return Response.success(convenientInquiryService.addUser(accountAddDTO));
}
@ApiOperation("修改用户信息")
@PostMapping("/modifyUser")
public Response<Boolean> modifyUser(@ApiParam(value = "用户id") @RequestParam @Nullable Long accountId,
@ApiParam(value = "有效期截止时间的毫秒级unix格式") @RequestParam @Nullable Long validEndTime,
@ApiParam(value = "用户类型 1/2/3/0 -> yearly/monthly/trial/visitor") @RequestParam @Nullable Integer systemUser,
@ApiParam("积分") @RequestParam @Nullable Long credits) {
return Response.success(convenientInquiryService.modifyUser(accountId, validEndTime, systemUser, credits));
}
@ApiOperation("获取用户信息")
@PostMapping("/getUserInfo")
public Response<IPage<Account>> getUserInfo(@Valid @RequestBody QueryUserConditionsVO queryUserConditionsVO) {
Long accountId = UserContext.getUserHolder().getId();
if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)) {
return Response.success(convenientInquiryService.getUserInfo(queryUserConditionsVO));
} else {
return Response.fail("Sorry, you don't have permission");
}
}
@ApiOperation("获取所有用户id")
@GetMapping("/getAllUserId")
public Response<List<Map<String, Object>>> getAllUsrIdList() {
return Response.success(convenientInquiryService.getAllUserIdList());
}
}

View File

@@ -3,6 +3,8 @@ package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
import com.ai.da.mapper.primary.entity.TrialOrder;
import java.util.Map;
/**
* Mapper 接口
*
@@ -11,6 +13,8 @@ import com.ai.da.mapper.primary.entity.TrialOrder;
*/
public interface TrialOrderMapper extends CommonMapper<TrialOrder> {
Map<String, Long> countOfficialUser();
}

View File

@@ -3,6 +3,7 @@ package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -69,11 +70,13 @@ public class Account implements Serializable {
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createDate;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateDate;
private Integer isTrial;

View File

@@ -0,0 +1,38 @@
package com.ai.da.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel("按条件筛选试用用户")
public class QueryUserConditionsVO extends PageQueryBaseVo {
private List<Long> ids;
private String userName;
private String email;
private String country;
private String occupation;
private String startTime;
private String endTime;
@ApiModelProperty("Ascending升序 || Descending降序")
private String order;
// by id | time | credits
private String orderBy;
private Integer systemUser;
}

View File

@@ -2,9 +2,13 @@ package com.ai.da.service;
import com.ai.da.mapper.primary.entity.Account;
import com.ai.da.mapper.primary.entity.Questionnaire;
import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.AccountAddDTO;
import com.ai.da.model.vo.QuestionnaireFeedbackVO;
import com.ai.da.model.vo.QuestionnaireVO;
import com.ai.da.model.vo.QueryUserConditionsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -12,6 +16,8 @@ import java.util.Map;
public interface ConvenientInquiryService extends IService<Questionnaire> {
IPage<TrialOrder> getTrial(QueryUserConditionsVO queryUserConditionsVO);
QuestionnaireFeedbackVO getQuestionnaireInfo();
List<QuestionnaireVO> getAllQuestionnaire();
@@ -26,4 +32,16 @@ public interface ConvenientInquiryService extends IService<Questionnaire> {
int recentActiveUserChart(String startTime, String endTime);
Map<String, List<Object>> getActiveUserFunc(String startTime, String endTime, List<Long> ids);
Map<String, Float> conversionRate();
Map<String, List<Object>> trialUserCountry();
Boolean addUser(AccountAddDTO accountAddDTO);
Boolean modifyUser(Long accountId, Long validEndTime, Integer systemUser, Long credits);
IPage<Account> getUserInfo(QueryUserConditionsVO queryUserConditionsVO);
List<Map<String, Object>> getAllUserIdList();
}

View File

@@ -1,28 +1,43 @@
package com.ai.da.service.impl;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.CreditsEventsEnum;
import com.ai.da.common.utils.CopyUtil;
import com.ai.da.mapper.primary.AccountMapper;
import com.ai.da.mapper.primary.QuestionnaireMapper;
import com.ai.da.mapper.primary.ToProductImageResultMapper;
import com.ai.da.mapper.primary.TrialOrderMapper;
import com.ai.da.mapper.primary.entity.Account;
import com.ai.da.mapper.primary.entity.Questionnaire;
import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.AccountAddDTO;
import com.ai.da.model.enums.Language;
import com.ai.da.model.vo.QuestionnaireFeedbackVO;
import com.ai.da.model.vo.QuestionnaireVO;
import com.ai.da.model.vo.QueryUserConditionsVO;
import com.ai.da.service.*;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mysql.cj.util.StringUtils;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMapper, Questionnaire> implements ConvenientInquiryService {
@Resource
@@ -31,6 +46,56 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
@Resource
private AccountLoginLogService accountLoginLogService;
public IPage<TrialOrder> getTrial(QueryUserConditionsVO queryUserConditionsVO) {
log.info("getTrial parameter : {},page:{}, size:{}",queryUserConditionsVO,queryUserConditionsVO.getPage(),queryUserConditionsVO.getSize());
/* 添加按条件查询试用用户 */
// 按用户邮箱/用户名/用户id查指定用户
QueryWrapper<TrialOrder> queryWrapper = new QueryWrapper<>();
if (!Objects.isNull(queryUserConditionsVO.getIds()) && !queryUserConditionsVO.getIds().isEmpty()) {
queryWrapper.in("id", queryUserConditionsVO.getIds());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getUserName())) {
queryWrapper.eq("user_name", queryUserConditionsVO.getUserName());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getEmail())) {
queryWrapper.eq("email", queryUserConditionsVO.getEmail());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getCountry())) {
queryWrapper.eq("country", queryUserConditionsVO.getCountry());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getOccupation())) {
queryWrapper.eq("occupation", queryUserConditionsVO.getOccupation());
}
// 按时间区间查
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getStartTime())) {
queryWrapper.gt("create_time", queryUserConditionsVO.getStartTime());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getEndTime())) {
queryWrapper.lt("create_time", queryUserConditionsVO.getEndTime());
}
// 排序
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getOrder()) && !StringUtils.isNullOrEmpty(queryUserConditionsVO.getOrderBy())) {
String orderBy = "id";
if (queryUserConditionsVO.getOrderBy().equals("time")) {
orderBy = "create_time";
}
switch (queryUserConditionsVO.getOrder()) {
case "Ascending":
queryWrapper.orderByAsc(orderBy);
break;
case "Descending":
queryWrapper.orderByDesc(orderBy);
break;
}
}
// 分页查询
return trialOrderMapper.selectPage(new Page<>(queryUserConditionsVO.getPage(), queryUserConditionsVO.getSize()), queryWrapper);
// List<TrialOrder> trialOrders = trialOrderMapper.selectList(null);
}
public QuestionnaireFeedbackVO getQuestionnaireInfo() {
String title = "AiDA_3.0 Feedback Survey--06/2024";
@@ -195,6 +260,10 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
if (StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
return null;
}
if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
endTime = LocalDateTime.now().format(formatter);
}
Integer type = null;
if (!StringUtil.isNullOrEmpty(userType)) {
type = userType.equals("visitor") ? 0 : userType.equals("trial") ? 1 : 2;
@@ -208,6 +277,10 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
if (StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
return null;
}
if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
endTime = LocalDateTime.now().format(formatter);
}
Integer type = null;
if (!StringUtil.isNullOrEmpty(userType)) {
type = userType.equals("visitor") ? 0 : userType.equals("trial") ? 1 : 2;
@@ -232,17 +305,24 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
// 近期活跃用户
public IPage<Account> recentActiveUser(String startTime, String endTime, int pageNum, int size) {
if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
endTime = LocalDateTime.now().format(formatter);
}
List<Long> accountIds = accountLoginLogService.getByDate(startTime, endTime);
return accountService.getPageByIds(accountIds, pageNum, size);
}
// 图表数据
public int recentActiveUserChart(String startTime, String endTime) {
if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
endTime = LocalDateTime.now().format(formatter);
}
List<Long> accountIds = accountLoginLogService.getByDate(startTime, endTime);
return accountIds.size();
}
@Resource
private GenerateService generateService;
@Resource
@@ -255,6 +335,8 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
private ChatRobotService chatRobotService;
public Map<String, List<Object>> getActiveUserFunc(String startTime, String endTime, List<Long> ids) {
log.info("getActiveUserFunc ==> startTime:{}, endTime:{}, accountList:{}", startTime, endTime, ids);
// 必须指定时间区间
if (StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) {
return null;
@@ -306,7 +388,199 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl<QuestionnaireMappe
return resp;
}
//
@Resource
private TrialOrderMapper trialOrderMapper;
// 试用用户到正式用户的转化率
public Map<String, Float> conversionRate() {
QueryWrapper<TrialOrder> queryWrapper = new QueryWrapper<>();
// 获取试用用户总数
queryWrapper.select("count(distinct email) as count");
List<Map<String, Object>> trialMaps = trialOrderMapper.selectMaps(queryWrapper);
Long totalTrials = (Long) trialMaps.get(0).get("count");
// 获取从试用用户转为正式用户的用户数量
Map<String, Long> officialMaps = trialOrderMapper.countOfficialUser();
Long trialToOfficial = officialMaps.get("count");
// 计算转化率
HashMap<String, Float> resp = new HashMap<>();
resp.put("trialUserCount", totalTrials.floatValue());
resp.put("trialToOfficialCount", trialToOfficial.floatValue());
resp.put("conversionRate", new BigDecimal(trialToOfficial).divide(new BigDecimal(totalTrials), 2, RoundingMode.HALF_UP).floatValue());
return resp;
}
// 试用用户地区统计
public Map<String, List<Object>> trialUserCountry() {
QueryWrapper<TrialOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.select("country, count(id) as count")
.groupBy("country");
List<Map<String, Object>> countryCount = trialOrderMapper.selectMaps(queryWrapper);
Map<Object, Object> countryCountMap = countryCount.stream().collect(Collectors.toMap(
map -> map.get("country"),
map -> map.get("count")
));
HashMap<String, List<Object>> resp = new HashMap<>();
resp.put("names", new ArrayList<>(countryCountMap.keySet()));
resp.put("values", new ArrayList<>(countryCountMap.values()));
return resp;
}
// 新增用户
public Boolean addUser(AccountAddDTO accountAddDTO) {
// 需要给的数据 用户邮箱、用户名、账号有效期截止时间、账号类型
Account account = CopyUtil.copyObject(accountAddDTO, Account.class);
// 添加正式用户
if (Objects.isNull(accountAddDTO.getSystemUser())) {
throw new BusinessException("you have to choose user type");
} else {
switch (accountAddDTO.getSystemUser()) {
case 0:
account.setCredits(new BigDecimal(0));
account.setIsTrial(0);
break;
case 1:
account.setCredits(new BigDecimal(CreditsEventsEnum.INIT_YEARLY.getValue()));
account.setIsTrial(0);
break;
case 2:
account.setCredits(new BigDecimal(CreditsEventsEnum.INIT_MONTHLY.getValue()));
account.setIsTrial(0);
break;
case 3:
account.setCredits(new BigDecimal(CreditsEventsEnum.INIT_TRIAL.getValue()));
account.setIsTrial(1);
break;
}
}
account.setValidStartTime(Long.parseLong(accountAddDTO.getValidStartTime()));
account.setValidEndTime(Long.parseLong(accountAddDTO.getValidEndTime()));
account.setUserPassword("Third-000000");
account.setLanguage(Language.ENGLISH.name());
account.setCreateDate(new Date());
account.setIsBeginner(1);
log.info("添加用户:{}", accountAddDTO.getUserEmail());
return accountService.save(account);
}
// 修改用户信息
public Boolean modifyUser(Long accountId, Long validEndTime, Integer systemUser, Long credits) {
log.info("modifyUser ==> accountId:{}, validEndTime:{}, systemUser:{}, systemUser:{}", accountId, validEndTime, systemUser, credits);
if (Objects.isNull(accountId) && Objects.isNull(validEndTime) && Objects.isNull(systemUser) && Objects.isNull(credits)) {
return null;
} else if (Objects.isNull(accountId)) {
throw new BusinessException("you have to choose a user");
}
Account account = new Account();
// 修改用户有效期截止日期、用户类型、积分
if (!Objects.isNull(validEndTime)) {
account.setValidEndTime(validEndTime);
}
if (!Objects.isNull(systemUser)) {
account.setSystemUser(systemUser);
}
/*if (!StringUtils.isNullOrEmpty(systemUser)) {
int systemUser = 0;
switch (systemUser) {
case "yearly":
systemUser = 1;
break;
case "monthly":
systemUser = 2;
break;
case "trial":
systemUser = 3;
break;
case "visitor":
systemUser = 0;
break;
}
account.setSystemUser(systemUser);
}*/
if (!Objects.isNull(credits)) {
account.setCredits(new BigDecimal(credits));
}
account.setId(accountId);
account.setUpdateDate(new Date());
log.info("修改用户信息:{}", accountId);
return accountMapper.updateById(account) == 1;
// accountService.update(account,null);
}
@Resource
private AccountMapper accountMapper;
// 按条件查询用户信息
public IPage<Account> getUserInfo(QueryUserConditionsVO queryUserConditionsVO) {
log.info("getUserInfo parameter : {},page:{}, size:{}",queryUserConditionsVO,queryUserConditionsVO.getPage(),queryUserConditionsVO.getSize());
// 按用户邮箱/用户名/用户id查指定用户
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
if (!Objects.isNull(queryUserConditionsVO.getIds()) && !queryUserConditionsVO.getIds().isEmpty()) {
queryWrapper.in("id", queryUserConditionsVO.getIds());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getUserName())) {
queryWrapper.eq("user_name", queryUserConditionsVO.getUserName());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getEmail())) {
queryWrapper.eq("user_email", queryUserConditionsVO.getEmail());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getCountry())) {
queryWrapper.eq("country", queryUserConditionsVO.getCountry());
}
if (!Objects.isNull(queryUserConditionsVO.getSystemUser())) {
queryWrapper.eq("system_user", queryUserConditionsVO.getSystemUser());
}
// 按时间区间查
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getStartTime())) {
queryWrapper.gt("create_date", queryUserConditionsVO.getStartTime());
}
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getEndTime())) {
queryWrapper.lt("create_date", queryUserConditionsVO.getEndTime());
}
// 排序
if (!StringUtils.isNullOrEmpty(queryUserConditionsVO.getOrder()) && !StringUtils.isNullOrEmpty(queryUserConditionsVO.getOrderBy())) {
String orderBy = "id";
switch (queryUserConditionsVO.getOrderBy()) {
case "time":
orderBy = "create_date";
break;
case "credits":
orderBy = "credits";
break;
}
switch (queryUserConditionsVO.getOrder()) {
case "Ascending":
queryWrapper.orderByAsc(orderBy);
break;
case "Descending":
queryWrapper.orderByDesc(orderBy);
break;
}
}
// 分页查询
return accountMapper.selectPage(new Page<>(queryUserConditionsVO.getPage(), queryUserConditionsVO.getSize()), queryWrapper);
}
public List<Map<String, Object>> getAllUserIdList() {
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id as value, user_name as label");
return accountMapper.selectMaps(queryWrapper);
// return maps.stream().map(map -> (Long)map.get("id")).collect(Collectors.toList());
}
}

View File

@@ -1292,7 +1292,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
.lt("create_date", endTime)
.select("count(id) as count");
if (!accountIds.isEmpty()){
if (!Objects.isNull(accountIds) && !accountIds.isEmpty() ){
queryWrapper.in("account_id", accountIds);
}