This commit is contained in:
77
2024-04-27 16:31:10 +08:00
parent e0f32c340f
commit ee2b25ea43
13 changed files with 194 additions and 16 deletions

View File

@@ -0,0 +1,49 @@
package com.ruoyi.xq.controller.app;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.PageModel;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.xq.dto.app.invite.UserInviteListVo;
import com.ruoyi.xq.service.UserInviteService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/invite")
@Tag(name = "邀请相关接口")
@Slf4j
public class InviteAppController {
@Autowired
private UserInviteService userInviteService;
@GetMapping("/logs")
@Operation(summary = "邀请人员记录")
@Log(title = "邀请人员记录", businessType = BusinessType.OTHER, isSaveDb = false)
public R<PageModel<UserInviteListVo>> inviteLogs(PageQuery pageQuery){
IPage<UserInviteListVo> res = userInviteService.pageApp(pageQuery, LoginHelper.getUserId());
return R.ok(PageModel.build(res));
}
@GetMapping("/share")
@Operation(summary = "获取分享图片")
@Log(title = "获取分享图片", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Map<String,String>> share(){
String url = userInviteService.share(LoginHelper.getUserId());
Map<String,String> map = new HashMap<>();
map.put("share", url);
return R.ok(map);
}
}

View File

@@ -77,13 +77,13 @@ public class SettingAppController {
} }
// @GetMapping("/areaCode/list") @GetMapping("/areaCode/list")
// @Operation(summary = "获取省市区编码接口") @Operation(summary = "获取省市区编码接口")
// @Log(title = "获取省市区编码接口", businessType = BusinessType.OTHER, isSaveDb = false) @Log(title = "获取省市区编码接口", businessType = BusinessType.OTHER, isSaveDb = false)
// public R<List<AreaCode>> listAreaCode(AreaCodeQuery query){ public R<List<AreaCode>> listAreaCode(AreaCodeQuery query){
// List<AreaCode> list = areaCodeService.listAreaCode(query); List<AreaCode> list = areaCodeService.listAreaCode(query);
// return R.ok(list); return R.ok(list);
// } }
@GetMapping("/areaCode/tree") @GetMapping("/areaCode/tree")
@Operation(summary = "获取所有省市区编码") @Operation(summary = "获取所有省市区编码")

View File

@@ -171,6 +171,8 @@ public class User implements Serializable {
*/ */
private String imToken; private String imToken;
private String openId;
private LocalDateTime createTime; private LocalDateTime createTime;
private LocalDateTime updateTime; private LocalDateTime updateTime;

View File

@@ -0,0 +1,21 @@
package com.ruoyi.xq.dto.app.invite;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class UserInviteListVo {
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "用户头像")
private String avatar;
@Schema(description = "性别 0-未知 1-女 2-男")
private Integer gender;
@Schema(description = "昵称")
private String nickname;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

View File

@@ -11,10 +11,8 @@ import com.ruoyi.xq.enums.pay.PayStatusEnum;
import com.ruoyi.xq.enums.pay.PlatformTypeEnum; import com.ruoyi.xq.enums.pay.PlatformTypeEnum;
import com.ruoyi.xq.mq.AmqpProducer; import com.ruoyi.xq.mq.AmqpProducer;
import com.ruoyi.xq.mq.handle.dto.CalculateSalesHandleDTO; import com.ruoyi.xq.mq.handle.dto.CalculateSalesHandleDTO;
import com.ruoyi.xq.service.UserExtendService; import com.ruoyi.xq.service.*;
import com.ruoyi.xq.service.VipOrderService; import com.ruoyi.xq.service.impl.AuthOrderServiceImpl;
import com.ruoyi.xq.service.VipPriceService;
import com.ruoyi.xq.service.WxTransOrderService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -34,6 +32,8 @@ public class PayManager {
private VipPriceService vipPriceService; private VipPriceService vipPriceService;
@Autowired @Autowired
private WxTransOrderService wxTransOrderService; private WxTransOrderService wxTransOrderService;
@Autowired
private AuthOrderService authOrderService;
public PayOrderInfoDTO getOrderInfo(String orderNo){ public PayOrderInfoDTO getOrderInfo(String orderNo){
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo); OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
@@ -125,6 +125,9 @@ public class PayManager {
} }
} }
break; break;
case AUTH_ORDER:
ConsumeResp authResp = authOrderService.doSuccess(orderNo, params, appId, payTypeEnum);
break;
default: default:
break; break;
} }

View File

@@ -17,7 +17,7 @@ import java.io.File;
@Component @Component
@Slf4j @Slf4j
public class ShareManager { public class ShareManager {
private final static String login = "https://12903012.com"; private final static String login = "https://xq.mubai8888.com/login?inviteCode=";
@Autowired @Autowired
private UserExtendService userExtendService; private UserExtendService userExtendService;
@@ -32,7 +32,7 @@ public class ShareManager {
if(StringUtils.isNotEmpty(userExtend.getQrUrl())){ if(StringUtils.isNotEmpty(userExtend.getQrUrl())){
return userExtend.getQrUrl(); return userExtend.getQrUrl();
} }
String url = login + "from=" + usercode; String url = login + usercode;
try { try {
File file = QrUtils.generateQrCode(usercode, url); File file = QrUtils.generateQrCode(usercode, url);
SysOssVo oss = sysOssService.upload(file); SysOssVo oss = sysOssService.upload(file);

View File

@@ -1,9 +1,11 @@
package com.ruoyi.xq.mapper; package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo; import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import com.ruoyi.xq.dto.app.invite.UserInviteListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**
@@ -15,4 +17,6 @@ import org.apache.ibatis.annotations.Param;
public interface UserInviteMapper extends BaseMapper<UserInvite> { public interface UserInviteMapper extends BaseMapper<UserInvite> {
Page<UserInviteAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserInviteAdminVo bo); Page<UserInviteAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserInviteAdminVo bo);
IPage<UserInviteListVo> pageApp(@Param("build") Page<Object> build, @Param("userId") Long userId);
} }

View File

@@ -4,6 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.AuthOrder; import com.ruoyi.xq.domain.AuthOrder;
import com.ruoyi.xq.dto.app.pay.ConsumeResp;
import com.ruoyi.xq.enums.pay.PlatformTypeEnum;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/** /**
* 实名认证订单Service接口 * 实名认证订单Service接口
@@ -17,4 +22,7 @@ public interface AuthOrderService extends IService<AuthOrder> {
AuthOrder createVipOrder(Long userId); AuthOrder createVipOrder(Long userId);
AuthOrder getByOrderNo(String orderNo);
ConsumeResp doSuccess(String orderNo, Map<String, String> params, String appId, PlatformTypeEnum payTypeEnum);
} }

View File

@@ -1,10 +1,12 @@
package com.ruoyi.xq.service; package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo; import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import com.ruoyi.xq.dto.app.invite.UserInviteListVo;
/** /**
* 用户邀请Service接口 * 用户邀请Service接口
@@ -22,4 +24,7 @@ public interface UserInviteService extends IService<UserInvite> {
UserInvite getByUserId(Long sourceUserId); UserInvite getByUserId(Long sourceUserId);
String share(Long userId);
IPage<UserInviteListVo> pageApp(PageQuery pageQuery, Long userId);
} }

View File

@@ -1,21 +1,29 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.AuthOrder; import com.ruoyi.xq.domain.AuthOrder;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.dto.app.pay.ConsumeResp;
import com.ruoyi.xq.enums.common.OrderTypeEnum; import com.ruoyi.xq.enums.common.OrderTypeEnum;
import com.ruoyi.xq.enums.common.TraceIdEnum;
import com.ruoyi.xq.enums.pay.PayStatusEnum; import com.ruoyi.xq.enums.pay.PayStatusEnum;
import com.ruoyi.xq.enums.pay.PlatformTypeEnum;
import com.ruoyi.xq.manager.OrderNoUtil; import com.ruoyi.xq.manager.OrderNoUtil;
import com.ruoyi.xq.manager.TraceIdManager;
import com.ruoyi.xq.mapper.AuthOrderMapper; import com.ruoyi.xq.mapper.AuthOrderMapper;
import com.ruoyi.xq.service.AuthOrderService; import com.ruoyi.xq.service.AuthOrderService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Map;
/** /**
* 实名认证订单Service业务层处理 * 实名认证订单Service业务层处理
@@ -50,4 +58,41 @@ public class AuthOrderServiceImpl extends ServiceImpl<AuthOrderMapper,AuthOrder>
this.save(authOrder); this.save(authOrder);
return authOrder; return authOrder;
} }
@Override
public AuthOrder getByOrderNo(String orderNo){
return this.getOne(Wrappers.lambdaQuery(AuthOrder.class).eq(AuthOrder::getOrderNo, orderNo).last("limit 1"));
}
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeResp doSuccess(String orderNo, Map<String, String> params, String appId, PlatformTypeEnum payTypeEnum){
AuthOrder authOrder = this.getByOrderNo(orderNo);
if(authOrder == null){
ConsumeResp resp = new ConsumeResp();
resp.setSuccess(false);
return resp;
}
String traceId = TraceIdManager.gen(TraceIdEnum.VIP);
boolean success = this.update(Wrappers.lambdaUpdate(AuthOrder.class)
.eq(AuthOrder::getId, authOrder.getId())
.eq(AuthOrder::getPayStatus, PayStatusEnum.READY_PAY.getCode())
.set(AuthOrder::getPayStatus, PayStatusEnum.PAY.getCode())
.set(AuthOrder::getTraceId, traceId)
.set(AuthOrder::getReturnContent, JSON.toJSONString(params))
.set(AuthOrder::getAppid,appId)
.set(AuthOrder::getPlatformType, payTypeEnum.getCode()));
if(!success){
ConsumeResp resp = new ConsumeResp();
resp.setSuccess(false);
return resp;
}
ConsumeResp resp = new ConsumeResp();
resp.setPrice(authOrder.getPrice());
resp.setUserId(authOrder.getUserId());
resp.setTraceId(traceId);
resp.setSuccess(true);
return resp;
}
} }

View File

@@ -1,14 +1,21 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserExtend;
import com.ruoyi.xq.domain.UserInvite; import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo; import com.ruoyi.xq.dto.admin.user.UserInviteAdminVo;
import com.ruoyi.xq.dto.app.invite.UserInviteListVo;
import com.ruoyi.xq.dto.common.user.MinUser;
import com.ruoyi.xq.manager.ShareManager;
import com.ruoyi.xq.mapper.UserInviteMapper; import com.ruoyi.xq.mapper.UserInviteMapper;
import com.ruoyi.xq.service.UserExtendService;
import com.ruoyi.xq.service.UserInviteService; import com.ruoyi.xq.service.UserInviteService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -30,6 +37,10 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired
private ShareManager shareManager;
@Autowired
private UserExtendService userExtendService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -78,4 +89,22 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
public UserInvite getByUserId(Long sourceUserId) { public UserInvite getByUserId(Long sourceUserId) {
return this.getOne(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getUserId, sourceUserId).last("limit 1")); return this.getOne(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getUserId, sourceUserId).last("limit 1"));
} }
@Override
public String share(Long userId) {
UserExtend userExtend = userExtendService.getByUserId(userId);
if(userExtend != null && StringUtils.isNotBlank(userExtend.getShareUrl())){
return userExtend.getShareUrl();
}
MinUser minUser = userService.getMinUserById(userId);
if(minUser == null){
throw new ServiceException("当前用户不存在");
}
return shareManager.genShareUrl(minUser.getUsercode());
}
@Override
public IPage<UserInviteListVo> pageApp(PageQuery pageQuery, Long userId) {
return baseMapper.pageApp(pageQuery.build(),userId);
}
} }

View File

@@ -1,5 +1,8 @@
package com.ruoyi.xq.util; package com.ruoyi.xq.util;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@@ -16,9 +19,10 @@ import java.net.URL;
* 创建时间2021年7月30日 上午10:27:13 * 创建时间2021年7月30日 上午10:27:13
* @version * @version
*/ */
@Slf4j
public class ImageUtil { public class ImageUtil {
private final static String BACK_IMAGE_PATH = "/home/server/cai/images/share_back.png"; private final static String BACK_IMAGE_PATH = "/home/server/xq/images/share_back.png";
// 1260 2100 // 1260 2100
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
@@ -97,7 +101,7 @@ public class ImageUtil {
//输出图片 //输出图片
ImageIO.write(big, "png", new File(outPath)); ImageIO.write(big, "png", new File(outPath));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("合成海报失败!",e);
} }
} }

View File

@@ -32,7 +32,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and t3.mobile = #{bo.inviteMobile} and t3.mobile = #{bo.inviteMobile}
</if> </if>
</where> </where>
order by t1.create_time order by t1.create_time desc
</select>
<select id="pageApp" resultType="com.ruoyi.xq.dto.app.invite.UserInviteListVo">
select
t2.id as user_id,t2.avatar,t2.gender,t2.nickname, t1.create_time
from xq_user_invite t1
join xq_user t2 on t1.user_id = t2.id
where t1.invite_id = #{userId}
order by t1.create_time desc
</select> </select>