“mitao”
2025-12-23 ae80fa80a5131f4dd9c04d82b07da8fe3c607f1e
Merge remote-tracking branch 'origin/master'
2个文件已添加
7个文件已修改
353 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/export/TBigGiftPackageOrderUserExport.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBigGiftPackageOrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/AppUserListQuery.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TBigGiftPackageOrderService.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBigGiftPackageOrderServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TAppUserVo.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TAppUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TBigGiftPackageOrderMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java
@@ -22,9 +22,7 @@
import com.ruoyi.system.dto.BatchUpdateIntegralDto;
import com.ruoyi.system.dto.GoldChangeDto;
import com.ruoyi.system.dto.UpdateAppUserDto;
import com.ruoyi.system.export.AppUserGoldImport;
import com.ruoyi.system.export.AppUserImport;
import com.ruoyi.system.export.BigGiftPackageImport;
import com.ruoyi.system.export.*;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.*;
@@ -33,6 +31,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Propagation;
@@ -71,34 +70,35 @@
@Api(tags = "(嘉视达)用户管理")
public class TAppUserController {
    private final TAppUserService appUserService;
    @Resource
    private TAppUserService appUserService;
    private  final RedisTemplate redisTemplate;
    private final TokenService tokenService;
    @Autowired
    private RedisTemplate redisTemplate;
    private final TCompanyService companyService;
    @Autowired
    private TokenService tokenService;
    private final TGoldChangeRecordService goldChangeRecordService;
    @Autowired
    private TCompanyService companyService;
    private final TIntegralChangeRecordService integralChangeRecordService;
    @Autowired
    private TGoldChangeRecordService goldChangeRecordService;
    private final SysUserMapper sysUserMapper;
    @Autowired
    private TIntegralChangeRecordService integralChangeRecordService;
    private final TBigGiftPackageOrderService bigGiftPackageOrderService;
    @Autowired
    private SysUserMapper sysUserMapper;
    private final TIntegralSettlementService integralSettlementService;
    @Autowired
    private TBigGiftPackageOrderService bigGiftPackageOrderService;
    @Autowired
    private TIntegralSettlementService integralSettlementService;
    public TAppUserController(TAppUserService appUserService, RedisTemplate redisTemplate, TokenService tokenService, TCompanyService companyService, TGoldChangeRecordService goldChangeRecordService, TIntegralChangeRecordService integralChangeRecordService, SysUserMapper sysUserMapper, TBigGiftPackageOrderService bigGiftPackageOrderService, TIntegralSettlementService integralSettlementService) {
        this.appUserService = appUserService;
        this.redisTemplate = redisTemplate;
        this.tokenService = tokenService;
        this.companyService = companyService;
        this.goldChangeRecordService = goldChangeRecordService;
        this.integralChangeRecordService = integralChangeRecordService;
        this.sysUserMapper = sysUserMapper;
        this.bigGiftPackageOrderService = bigGiftPackageOrderService;
        this.integralSettlementService = integralSettlementService;
    }
    @ApiOperation(value = "用户管理分页列表")
@@ -156,8 +156,17 @@
    @ApiOperation(value = "查看详情")
    @GetMapping(value = "/detail")
    public R<TAppUser> detail(@RequestParam String id) {
        return R.ok(appUserService.getById(id));
    public R<TAppUserVo> detail(@RequestParam String id) {
        TAppUser appUser = appUserService.getById(id);
        TAppUserVo tAppUserVo = new TAppUserVo();
        BeanUtils.copyProperties(appUser, tAppUserVo);
        if(appUser.getCompanyId()!=null){
            tAppUserVo.setReferrerCompany(companyService.getById(appUser.getCompanyId()));
        }
        if(appUser.getReferrerUserId()!=null && appUser.getReferrerStatus()==2){
            tAppUserVo.setReferrerUser(appUserService.getById(appUser.getReferrerUserId()));
        }
        return R.ok(tAppUserVo);
    }
@@ -443,13 +452,11 @@
    }
    @ApiOperation(value = "积分修改记录")
    @PostMapping(value = "/integralChangeRecord")
    public R<PageInfo<IntegralChangeRecordVo>> integralChangeRecord(@RequestBody IntegralChangeRecordQuery query) {
        return R.ok(integralChangeRecordService.integralChangeRecord(query));
    }
    @ApiOperation(value = "积分修改记录导出")
@@ -537,6 +544,7 @@
        return R.ok();
    }
    @ApiOperation(value = "金币扣除")
    @PostMapping(value = "/goldSub")
    @Log(title = "小程序用户-金币扣除", businessType = BusinessType.UPDATE)
@@ -573,6 +581,55 @@
    }
    @ApiOperation(value = "用户-购买记录导出")
    @PostMapping(value = "/pageOrderListExport")
    @Log(title = "购买记录-导出", businessType = BusinessType.EXPORT)
    public void pageOrderListExport(@RequestBody @Valid GoldChangeRecordQuery query){
        List<TBigGiftPackageOrder> list = bigGiftPackageOrderService.pageOrderListExport(query);
        ArrayList<TBigGiftPackageOrderUserExport> tBigGiftPackageOrderUserExports = new ArrayList<>();
        for (TBigGiftPackageOrder order : list) {
            TBigGiftPackageOrderUserExport export = new TBigGiftPackageOrderUserExport();
            export.setOrderNo(order.getCode());
            export.setCreateTime(order.getCreateTime());
            export.setUsername(order.getUserName());
            export.setUserPhone(order.getPhone());
            export.setOrderAmount(order.getOrderPrice());
            export.setGoodsName(order.getBigGiftPackageName());
            export.setPayMethod("微信支付");
            export.setDeposit(order.getDeposit());
            export.setBalance(order.getFinalPayment());
            export.setOrderStatus(order.getStatus());
            tBigGiftPackageOrderUserExports.add(export);
        }
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TBigGiftPackageOrderUserExport.class, tBigGiftPackageOrderUserExports);
        HttpServletResponse response = WebUtils.response();
        assert response != null;
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("购买记录导出信息.xls", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @ApiOperation(value = "用户- 推广记录")
    @PostMapping("/promotionPageList")
    public R<Page<UserPromotionPageListVo>> promotionPageList(@RequestBody @Valid UserPromotionPageListQuery query) {
@@ -581,7 +638,6 @@
        page.setRecords(list);
        return R.ok(page);
    }
    @ApiOperation(value = "用户-推广记录导出")
@@ -668,6 +724,7 @@
        return R.ok(integralSettlementPage);
    }
    @ApiOperation(value = "用户结算记录导出")
    @PostMapping(value = "/exportSettlementPageList")
    @Log(title = "结算记录-导出", businessType = BusinessType.EXPORT)
@@ -698,7 +755,6 @@
            }
        }
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/export/TBigGiftPackageOrderUserExport.java
New file
@@ -0,0 +1,51 @@
package com.ruoyi.system.export;
import cn.afterturn.easypoi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * 大礼包订单导出DTO
 *
 * @author ruoyi
 */
@Data
@ApiModel(value = "用户大礼包订单导出")
public class TBigGiftPackageOrderUserExport
{
    @Excel(name = "订单编号")
    private String orderNo;
    @Excel(name = "下单时间", width = 30, exportFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @Excel(name = "下单用户")
    private String username;
    @Excel(name = "用户手机号")
    private String userPhone;
    @Excel(name = "订单价格")
    private BigDecimal orderAmount;
    @Excel(name = "商品名称")
    private String goodsName;
    @Excel(name = "支付方式")
    private String payMethod;
    @Excel(name = "定金")
    private BigDecimal deposit;
    @Excel(name = "尾款")
    private BigDecimal balance;
    @Excel(name = "订单状态" ,replace = { "待付款_1", "已付订金_2", "已支付_3", "已确认收货_4", "已退款_5"})
    private Integer orderStatus;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBigGiftPackageOrderMapper.java
@@ -38,4 +38,6 @@
    List<UserProfitPageListVo> profitUserPageListExport(@Param("query") UserProfitPageListQuery query, @Param("sTime") String sTime, @Param("eTime") String eTime);
    List<TBigGiftPackageOrder> pageOrderListExport(@Param("query") GoldChangeRecordQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/query/AppUserListQuery.java
@@ -15,4 +15,6 @@
    private String phoneNumber;
    @ApiModelProperty(value = "状态 1=使用中 2=冻结")
    private Integer status;
    @ApiModelProperty(value = "推广状态有条件1 其他不传")
    private Integer promotionStatus;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TBigGiftPackageOrderService.java
@@ -61,4 +61,5 @@
    List<UserProfitPageListVo> profitUserPageListExport(@Valid UserProfitPageListQuery query);
    List<TBigGiftPackageOrder> pageOrderListExport(@Valid GoldChangeRecordQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBigGiftPackageOrderServiceImpl.java
@@ -273,6 +273,32 @@
    }
    @Override
    public List<TBigGiftPackageOrder> pageOrderListExport(GoldChangeRecordQuery query) {
        List<TBigGiftPackageOrder> tBigGiftPackageOrders =  this.baseMapper.pageOrderListExport( query);
        if(!tBigGiftPackageOrders.isEmpty()){
            List<Integer> companyId = tBigGiftPackageOrders.stream().map(TBigGiftPackageOrder::getCompanyId).collect(Collectors.toList());
            List<TCompany> tCompanies = companyMapper.selectBatchIds(companyId);
            tBigGiftPackageOrders.forEach(tBigGiftPackageOrder -> {
                TCompany tCompany1 = tCompanies.stream().filter(tCompany -> tCompany.getId().equals(tBigGiftPackageOrder.getCompanyId())).findFirst().orElse(null);
                if(tCompany1!=null){
                    tBigGiftPackageOrder.setCompanyName(tCompany1.getName());
                }
            });
            List<Integer> goodsIds = tBigGiftPackageOrders.stream().map(TBigGiftPackageOrder::getBigGiftPackageId).collect(Collectors.toList());
            List<TBigGiftPackage> bigGiftPackages = bigGiftPackageMapper.selectBatchIds(goodsIds);
            tBigGiftPackageOrders.forEach(tBigGiftPackageOrder -> {
                TBigGiftPackage bigGiftPackage = bigGiftPackages.stream().filter(tBigGiftPackage -> tBigGiftPackage.getId().equals(tBigGiftPackageOrder.getBigGiftPackageId())).findFirst().orElse(null);
                if(bigGiftPackage!=null){
                    tBigGiftPackageOrder.setBigGiftPackageName(bigGiftPackage.getName());
                }
            });
        }
        return tBigGiftPackageOrders;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public PlaceOrderVO placeOrder(BigGiftPlaceOrderDTO dto, Integer appUserId, String openid) {
        // 1. 校验商品是否存在
ruoyi-system/src/main/java/com/ruoyi/system/vo/TAppUserVo.java
New file
@@ -0,0 +1,144 @@
package com.ruoyi.system.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TAppUser;
import com.ruoyi.system.model.TCompany;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * 小程序用户
 * </p>
 *
 * @author xiaochen
 * @since 2025-12-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_app_user")
@ApiModel(value="TAppUser对象", description="小程序用户")
public class TAppUserVo implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "经销商id")
    @TableField("company_id")
    private Integer companyId;
    @ApiModelProperty(value = "姓名")
    @TableField("name")
    @Excel(name = "用户名", width = 20,orderNum = "1")
    private String name;
    @ApiModelProperty(value = "头像")
    @TableField("profile_photo")
    @Excel(name = "头像", width = 20, imageType = 1,type = 2,orderNum = "0")
    private String profilePhoto;
    @ApiModelProperty(value = "推广号")
    @TableField("code")
    @Excel(name = "推广号", width = 20,orderNum = "2")
    private String code;
    @ApiModelProperty(value = "推广二维码地址")
    @TableField("promotion_qr_code")
    private String promotionQrCode;
    @ApiModelProperty(value = "手机号")
    @TableField("phone")
    @Excel(name = "联系电话", width = 20,orderNum = "3")
    private String phone;
    @ApiModelProperty(value = "性别(1=男,2=女)")
    @TableField("gender")
    @Excel(name = "性别", width = 20,orderNum = "4",replace = {"男_1","女_2"})
    private Integer gender;
    @ApiModelProperty(value = "生日")
    @TableField("birthday")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 20,orderNum = "5",format = "yyyy-MM-dd")
    private LocalDate birthday;
    @ApiModelProperty(value = "微信openid")
    @TableField("openid")
    private String openid;
// 1:游客;2:营销员;3:合伙人;
    @ApiModelProperty(value = "角色(1=游客,2=营销员,3=合伙人)")
    @TableField("user_type")
    @Excel(name = "角色", width = 20,orderNum = "7",replace = {"游客_1","营销员_2","合伙人_3"})
    private Integer userType;
    @ApiModelProperty(value = "注册时间")
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "注册时间", width = 20,orderNum = "6",format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "历史累计积分")
    @TableField("total_accumulative_integral")
    private Integer totalAccumulativeIntegral;
    @ApiModelProperty(value = "累计积分")
    @TableField("accumulative_integral")
    private Integer accumulativeIntegral;
    @ApiModelProperty(value = "推荐人id")
    @TableField("referrer_user_id")
    private Integer referrerUserId;
    @ApiModelProperty(value = "推荐状态(1=临时,2=正式)")
    @TableField("referrer_status")
    private Integer referrerStatus;
    @ApiModelProperty(value = "推荐时间")
    @TableField("referrer_time")
    private LocalDateTime referrerTime;
    @ApiModelProperty(value = "推广状态(0=关闭,1=打开)")
    @TableField("promotion_status")
    private Integer promotionStatus;
    @ApiModelProperty(value = "金币余额")
    @TableField("gold_balance")
    private BigDecimal goldBalance;
    @ApiModelProperty(value = "状态(1=正常,2=冻结,3=删除)")
    @TableField("status")
    @Excel(name = "状态", width = 20,orderNum = "8",replace = {"正常_1","冻结_2","删除_3"})
    private Integer status;
    @ApiModelProperty(value = "股东ID")
    @TableField("referrer_sys_user_id")
    private Integer referrerSysUserId;
    @ApiModelProperty(value = "当月预估积分")
    @TableField(exist = false)
    private BigDecimal estimatedMonthlyIntegral;
    @ApiModelProperty("上级推荐人信息")
    private TAppUser referrerUser;
    @ApiModelProperty("上级经销商信息")
    private TCompany referrerCompany;
}
ruoyi-system/src/main/resources/mapper/system/TAppUserMapper.xml
@@ -36,6 +36,9 @@
        <if test="query.status != null">
            and t1.status = #{query.status}
        </if>
        <if test="query.promotionStatus != null">
            and t1.promotion_status =1
        </if>
        order by t1.create_time desc
    </select>
ruoyi-system/src/main/resources/mapper/system/TBigGiftPackageOrderMapper.xml
@@ -164,5 +164,17 @@
        </if>
        order by t1.create_time desc
    </select>
    <select id="pageOrderListExport" resultType="com.ruoyi.system.model.TBigGiftPackageOrder">
        SELECT
            t1.id, t1.code, t1.company_id, t1.app_user_id, t1.create_time, t1.big_gift_package_id, t1.big_gift_package,
            t1.order_price, t1.deposit, t1.final_payment, t1.payment_price,
            t1.status, t1.delivery_time, t1.payment_type, t1.deposit_time, t1.deposit_payment_method,
            t1.deposit_payment_serial_number, t1.final_payment_time, t1.final_payment_method,
            t1.final_payment_serial_number, t1.del_flag, t1.remark,t2.phone,t2.name userName
        FROM t_big_gift_package_order t1 LEFT JOIN t_app_user t2 ON t1.app_user_id = t2.id
        WHERE t1.del_flag = 0 and t2.id = #{query.userId}
        order by t1.create_time desc
    </select>
</mapper>