Merge remote-tracking branch 'origin/main'

# Conflicts:
#	fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/AllOrderInfoController.java
This commit is contained in:
sw 2024-11-14 09:07:54 +08:00
commit 6907e0b430
33 changed files with 263 additions and 131 deletions

View File

@ -278,7 +278,7 @@ import {getInstituionListApi3} from "../../../../api/allOrder";
.container{
background: #f4f5f9;
box-sizing: border-box;
padding-bottom: 8px;
padding-bottom: 0px;
}
.app-top{
width: 100%;

View File

@ -85,6 +85,7 @@ export default {
}
.nbox{
margin-right: 30px;
cursor: pointer;
}
.fount-box{
font-size: 14px;

View File

@ -1,6 +1,6 @@
<!-- 收银台订单-->
<template>
<div style="box-sizing: border-box;padding: 10px; background: #f6f8f9;">
<div style="box-sizing: border-box;padding: 10px; background: #f6f8f9;padding-bottom: 0px">
<div class="bor_s" shadow="never">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<el-form-item label="" prop="fleetName" style="width: 180px">
@ -477,7 +477,7 @@ export default {
.table-box {
width: 100%;
height: 70vh;
height: 73vh;
overflow: auto;
scrollbar-width: none;
}
@ -541,6 +541,5 @@ export default {
background: #fff;
box-sizing: border-box;
padding: 15px;
height: 85vh;
}
</style>

View File

@ -302,7 +302,8 @@
</el-form-item>
</el-col>
</el-row>
<div style="margin: 50px 0;display: flex">
<div style="margin: 15px 0;display: flex">
<div style="font-weight: bold;margin-left: 10px">会员导入</div>
<el-upload
class="upload-demo"
v-loading="uploading"
@ -310,9 +311,9 @@
:headers="headers"
:limit="1"
:on-change="handleChange"
style="margin-left: 50px;width: 200px"
style="margin-left: 5px;width: 200px"
:file-list="fileList">
<div style="display: flex;margin-left: 20px">
<div style="display: flex;margin-left: 10px">
<div style="position: relative">
<img src="@/assets/images/scimg.png" style="width: 167px;height: 144px;">
<div style=" width: 100%; position: absolute;left: 50%;transform: translate(-50%,50%);bottom: 36px">
@ -320,19 +321,19 @@
</div>
</div>
</div>
<!-- <el-button size="small" type="success" icon="el-icon-upload">点击上传</el-button>-->
</el-upload>
<div style="margin-top: 120px">
<!-- dev-api fuint-application-->
<a style="margin-left: 50px;color: #00A1FF;"
<a style="margin-left: 10px;color: #00A1FF;"
href="/fuint-application/fleetMember/export"> 导入模板下载.xlsx </a>
</div>
</div>
<div style="color: grey;font-size: 12px;line-height: 20px">
只能上传xls/xlsx文件批量导入会员手机号单次最大支持5000个会员手机号认证请确保用户手机号已注册为油站会员(在会员列表已显示)否则无法添加成员信息
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelMembers"> </el-button>
@ -421,7 +422,6 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total2>0"
:total="total2"
@ -826,7 +826,7 @@ export default {
.table-boxs {
width: 100%;
height: 74vh;
height: 80vh;
overflow: auto;
}
@ -848,6 +848,6 @@ export default {
box-sizing: border-box;
padding: 15px;
padding-bottom: 0px;
height: 85vh;
}
</style>

View File

@ -386,6 +386,7 @@ export default
},
methods: {
sjkbStoreAmount(e) {
this.dataTimeShow = false
console.log(e)
this.sjkbTitle = e
let command = e
@ -421,6 +422,7 @@ export default
this.$router.push('/notificationList/index')
},
editShow(e) {
this.showTimeShow = false
this.disabled = true
console.log(e)
this.ypjyTitle = e
@ -457,6 +459,7 @@ export default
this.getDataShow()
},
editCount(e) {
this.countTimeShow = false
this.disabled = true
this.sjtjTitle = e
console.log("e", e)

View File

@ -3,8 +3,6 @@
<el-carousel height="230px">
<el-carousel-item v-for="(item,index) in bannerList" :key="index">
<div class="bannser">
<!-- <img src="../../assets/images/banner.png" alt="" >-->
<img :src="imagePath+item.productImage" alt="" >
</div>
</el-carousel-item>

View File

@ -3,18 +3,15 @@
<div class="card-change">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="legalRepresentativeContact">
<el-select
v-model="queryParams.orgId"
clearable
placeholder="所属机构"
>
<el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="" prop="legalRepresentativeContact">
<el-input
v-model="queryParams.legalRepresentativeContact"
@ -25,7 +22,6 @@
/>
</el-form-item>
<el-form-item label="" prop="legalRepresentativeContact">
<el-select v-model="queryParams.appStatus" placeholder="请选择小程序状态">
<el-option label="停用" value="0" ></el-option>
<el-option label="启用" value="1" ></el-option>
@ -41,12 +37,7 @@
>新增小程序配置</el-button>
</el-form-item>
</el-form>
<!-- </el-card>-->
<!-- &lt;!&ndash; 列表信息&ndash;&gt;-->
<!-- <el-card style="margin-top: 20px" >-->
<div style="height: 70vh;overflow: auto">
<div style="height: 73vh;overflow: auto">
<el-table :data="tableData" style="width: 100%" border>
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="orgName" label="机构名称"></el-table-column>
@ -97,18 +88,8 @@
/>
</div>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="35%" append-to-body>
<!-- <el-form ref="form" :model="deviceInfo" label-width="80px">-->
<el-form :model="deviceInfo" ref="deviceForm" label-width="140px" :rules="rule">
<!-- <el-form-item label="机构名称" prop="orgName">-->
<!-- <el-input v-model="deviceInfo.orgName" style="width: 300px"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="机构名称" prop="orgName">-->
<!-- <el-input v-model="deviceInfo.orgName" style="width: 300px"></el-input>-->
<!-- </el-form-item>-->
<!-- -->
<el-form-item label="机构名称" prop="orgId" style="margin-left: -20px;">
<el-select
v-model="deviceInfo.orgId"
@ -119,7 +100,6 @@
<el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="unifiedSocialCreditCode" style="margin-left: -20px;">
<el-input v-model="deviceInfo.unifiedSocialCreditCode" style="width: 100%;" placeholder="请输入统一社会信用代码"></el-input>
@ -362,7 +342,9 @@ export default {
line-height: 60px;
}
.app-container{
box-sizing: border-box;
padding: 10px;
padding-bottom: 0px;
}
</style>

View File

@ -29,7 +29,7 @@
</el-button>
</el-form-item>
</el-form>
<div style="height: 74vh;overflow: auto">
<div style="height: 73vh;overflow: auto">
<el-table :data="tableData" style="width: 100%;" border>
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="bannerName" label="banner名称"></el-table-column>

View File

@ -3,13 +3,6 @@
<div class="card-change">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="deptId">
<!-- <el-input-->
<!-- v-model="queryParams.deptId"-->
<!-- placeholder="请选择机构名称"-->
<!-- clearable-->
<!-- style="width: 240px;"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<el-select v-model="queryParams.deptId" placeholder="请选择机构名称" clearable>
<el-option
v-for="item in deptListSelect"
@ -38,7 +31,7 @@
</el-select>
</el-form-item>
<el-form-item label="" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择支付通道状态" clearable style="width: 200px;margin-right: 15px;">
<el-select v-model="queryParams.status" placeholder="请选择支付通道状态" clearable >
<el-option
v-for="dict in dict.type.zhzt"
:key="dict.value"
@ -57,11 +50,7 @@
>新增支付参数</el-button>
</el-form-item>
</el-form>
<!-- </el-card>-->
<!-- &lt;!&ndash; 列表信息&ndash;&gt;-->
<!-- <el-card style="margin-top: 20px" >-->
<div style="height: 70vh;overflow: auto">
<div style="height: 73vh;overflow: auto;scrollbar-width: none">
<el-table :data="tableData" style="width: 100%">
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="deptName" label="机构名称"></el-table-column>
@ -132,10 +121,8 @@
/>
</div>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="30%" append-to-body>
<el-form :model="deviceInfo" ref="deviceForm" label-width="120px" :rules="rules">
<el-form-item label="机构名称" prop="deptId" style="margin-left: -30px;" >
<el-select v-model="deviceInfo.deptId" placeholder="请选择机构名称" @change="chooseDept(deviceInfo.deptId)" style="width: 100%">
<el-option
@ -164,12 +151,6 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="机构号" prop="" v-if="deviceInfo.paymentChannel!='富友'" style="margin-left: -30px;">
<el-input v-model="deviceInfo.insCd" style="width: 100%"></el-input>
</el-form-item>
<el-form-item label="机构号" prop="insCd" v-else style="margin-left: -30px;">
<el-input v-model="deviceInfo.insCd" style="width: 100%"></el-input>
</el-form-item> -->
<el-form-item label="公钥" prop="publicKey" style="margin-left: -30px;">
<el-input v-model="deviceInfo.publicKey" placeholder="请输入支付通道的公钥" style="width: 100%"></el-input>
</el-form-item>
@ -197,13 +178,9 @@
<el-button type="primary" @click="submitForm('deviceForm')">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {deleteAppApi, getAppListApi, saveAppApi, updateAppApi} from "@/api/sys/app";
import {selectChildByDeptId} from "@/api/system/Site/site";
import {addMerchantApi, editMerchantRemark, getMerchant, listMerchantPage} from "@/api/payConfig/merchantconfig";
@ -213,10 +190,8 @@ import {
getPaymentParameter,
listPaymentParameterPage
} from "@/api/payConfig/paymentParameter";
export default {
name: "printIndex",
dicts: ['zhzt','payment_channel'],
data() {
return {
@ -232,7 +207,6 @@ export default {
status:"qy"
},
deptListSelect:[],
//
open: false,
title:"",
@ -289,7 +263,6 @@ export default {
})
},
getsSubmitDeviceInfo(){},
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
@ -360,9 +333,7 @@ export default {
this.deptListSelect = res.data
})
},
del(e) {
this.$confirm('此操作将永久删除该支付参数, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -377,16 +348,12 @@ export default {
this.getList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
clean() {
this.deviceInfo= {
@ -418,6 +385,8 @@ export default {
}
.app-container{
height: 100%;
box-sizing: border-box;
padding: 10px;
}
.single-row {
overflow: hidden;

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.cardCoupon.dto.CardCouponUserDto;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser;
import com.fuint.business.marketingActivity.cardCoupon.service.CardCouponUserService;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUserVo;
@ -129,8 +130,8 @@ public class CardCouponUserController extends BaseController {
* 分页查询已核销记录列表
*/
@GetMapping("/selectVerifiedList")
public ResponseObject selectVerifiedList(Page<CardCouponUser> page,CardCouponUser cardCouponUser) {
return getSuccessResult(this.cardCouponUserService.selectVerifiedList(page, cardCouponUser));
public ResponseObject selectVerifiedList(Page<CardCouponUser> page, CardCouponUserDto cardCouponUserDto) {
return getSuccessResult(this.cardCouponUserService.selectVerifiedList(page, cardCouponUserDto));
}
}

View File

@ -0,0 +1,62 @@
package com.fuint.business.marketingActivity.cardCoupon.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class CardCouponUserDto {
//主键id
@TableId(type = IdType.AUTO)
private Integer id;
//所属连锁店id
private Integer chainStoreId;
//所属店铺id
private Integer storeId;
//会员id
private Integer mtUserId;
//会员手机号码
private String mobile;
//来源类型 1储值卡2囤油卡 3消费有礼赠送4收银台赠送
private String fromType;
//活动id
private Integer activeId;
//优惠券id
private Integer cardCouponId;
//0未使用1已核销
private String status;
//使用时间
private Date useTime;
//订单总表all order 的主键
private Integer orderId;
//创建者
private String createBy;
//创建时间
private Date createTime;
//更新者
private String updateBy;
//更新时间
private Date updateTime;
//核销码
private String verificationCode;
/**
* 优惠券名称
*/
private String name;
/**
* 优惠券类型
*/
private String type;
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private String begin;
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private String end;
}

View File

@ -60,23 +60,5 @@ public class CardCouponUser extends Model<CardCouponUser> {
//核销码
private String verificationCode;
/**
* 优惠券名称
*/
@Transient
private String name;
/**
* 优惠券类型
*/
@Transient
private String type;
@Transient
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private String begin;
@Transient
@JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
private String end;
}

View File

@ -3,6 +3,7 @@ package com.fuint.business.marketingActivity.cardCoupon.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.cardCoupon.dto.CardCouponUserDto;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUserVo;
@ -51,7 +52,6 @@ public interface CardCouponUserMapper extends BaseMapper<CardCouponUser> {
CardCouponUserVo selectOneCardName(Integer id);
IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, @Param("obj")CardCouponUser cardCouponUser);
IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, @Param("obj") CardCouponUserDto cardCouponUserDto);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.marketingActivity.activeApplet.entity.ActiveApplet;
import com.fuint.business.marketingActivity.cardCoupon.dto.CardCouponUserDto;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUserVo;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO;
@ -70,6 +71,6 @@ public interface CardCouponUserService extends IService<CardCouponUser> {
List<Map<String, Object>> selectUserCardVerification(String str);
IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, CardCouponUser cardCouponUser);
IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, CardCouponUserDto cardCouponUserDto);
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.fuint.business.marketingActivity.cardCoupon.dto.CardCouponUserDto;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon;
import com.fuint.business.marketingActivity.cardCoupon.mapper.CardCouponUserMapper;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser;
@ -195,8 +196,8 @@ public class CardCouponUserServiceImpl extends ServiceImpl<CardCouponUserMapper,
}
@Override
public IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, CardCouponUser cardCouponUser) {
return cardCouponUserMapper.selectVerifiedList(page, cardCouponUser);
public IPage<CardCouponUserVo> selectVerifiedList(Page<CardCouponUser> page, CardCouponUserDto cardCouponUserDto) {
return cardCouponUserMapper.selectVerifiedList(page, cardCouponUserDto);
}
}

View File

@ -2,7 +2,9 @@ package com.fuint.business.marketingActivity.cardFule.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fuint.repository.model.base.BaseEntity;
import lombok.Data;
@ -19,6 +21,7 @@ public class CardFuelChange extends BaseEntity {
/**
* 主键id
*/
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
/**
* 用户id

View File

@ -273,7 +273,8 @@
FROM
card_value_record
<where>
store_id = #{cardValueRecord.storeId}
pay_status = 'paid'
and store_id = #{cardValueRecord.storeId}
<if test="cardValueRecord.mtStaffId != null and cardValueRecord.mtStaffId != ''">
and mt_staff_id = #{cardValueRecord.mtStaffId}
</if>

View File

@ -113,4 +113,10 @@ public interface CardValueRecordService extends IService<CardValueRecord> {
* @return
*/
List<CardValueRecord> getCardValueByCardValueId(CardValueConditionVo cardValueConditionVo);
/**
* 会员充值总人数
* @param user
* @return
*/
Integer selectUserTotal1(LJUserVo user);
}

View File

@ -524,9 +524,7 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
cardValueRecordDTO.setPoints(Optional.ofNullable(selectCard.getPoints()).orElse(0));
//赠送优惠卷
if (CollectionUtil.isNotEmpty(selectCard.getCardCouponList())){
cardValueRecordDTO.setCouponIds(
ArrayUtil.join(selectCard.getCardCouponList().stream().map(CardCoupon::getId).collect(Collectors.toList()),",")
);
cardValueRecordDTO.setCouponIds(selectCard.getCardCouponList().stream().map(CardCoupon::getId).collect(Collectors.toList()).toString());
}
//赠送成长值
cardValueRecordDTO.setGrowthValue(Optional.ofNullable(selectCard.getGrowthValue()).orElse(0));
@ -1395,5 +1393,27 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
,cardValueConditionVo.getDataRange()[1]);
return list;
}
@Override
public Integer selectUserTotal1(LJUserVo user) {
List<LJUserVo> userList = ljUserMapper.findUserList(user);
List<Integer> userIds = new ArrayList<>();
for (LJUserVo userVo : userList) {
userIds.add(userVo.getId());
}
QueryWrapper queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotEmpty(user.getParams())){
queryWrapper.apply(true,"create_time BETWEEN '" + user.getParams().get("beginTime") + "' and '" + user.getParams().get("endTime") + "'");
}
if (CollectionUtil.isNotEmpty(userIds)){
queryWrapper.eq("chain_store_id",user.getChainStoreId());
queryWrapper.in("mt_user_id",userIds);
queryWrapper.groupBy("mt_user_id");
List list = baseMapper.selectList(queryWrapper);
return list.size();
}
return 0;
}
}

View File

@ -8,7 +8,9 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -22,6 +24,8 @@ import java.util.List;
* @since 2023-11-07 15:10:07
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("oil_order")
@ApiModel(value = "OilOrder对象", description = "油品订单表")
public class OilOrder extends BaseEntity implements Serializable {

View File

@ -208,7 +208,8 @@
SELECT
count(*) numberOfProducts,-- 商品笔数
sum( pay_amount ) theTotalAmount,-- 总金额
sum( amount ) theTotalAmount,-- 总金额
sum( pay_amount ) theTotalPayAmount,-- 实付总金额
sum( goods_num ) theTotalNumberOfUnits,-- 商品总数量
sum( discount ) discountAmount,-- 优惠金额
sum( CASE WHEN pay_type = 'WECHAT' THEN pay_amount END ) AS wechat,-- 微信
@ -218,7 +219,8 @@
from mt_order
<where>
store_id = #{order.storeId}
status = 'paid'
and store_id = #{order.storeId}
<if test="order.staffId != null and order.staffId != ''">
and staff_id = #{order.staffId}
</if>

View File

@ -543,7 +543,9 @@
sum(CASE WHEN pay_type = 'WECHAT' THEN pay_amount END) AS wechat,
sum(CASE WHEN pay_type = 'ALIPAY' THEN pay_amount END) AS alipay,
sum(CASE WHEN pay_type = 'CASH' THEN pay_amount END) AS cash,
sum( CASE WHEN pay_type = 'UNIONPAY' THEN pay_amount END ) AS UNIONPAY
sum( CASE WHEN pay_type = 'UNIONPAY' THEN pay_amount END ) AS UNIONPAY,
sum( CASE WHEN pay_type = 'fule_card' THEN pay_amount END ) AS fuleCard,
sum( CASE WHEN pay_type = 'card_value' THEN pay_amount END ) AS cardValue
from oil_order
<where>
store_id = #{order.storeId}

View File

@ -67,8 +67,10 @@ import com.fuint.common.dto.AccountInfo;
import com.fuint.common.service.MemberService;
import com.fuint.common.service.StaffService;
import com.fuint.common.util.TokenUtil;
import com.fuint.repository.mapper.MtOrderMapper;
import com.fuint.repository.mapper.MtStaffMapper;
import com.fuint.repository.mapper.MtUserMapper;
import com.fuint.repository.model.MtOrder;
import com.fuint.repository.model.MtStaff;
import com.fuint.repository.model.MtUser;
import com.fuint.repository.model.TAccount;
@ -139,6 +141,9 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
@Resource
private MtUserMapper mtUserMapper;
@Autowired
private MtOrderMapper mtOrderMapper;
@Override
public Map<String, Object> orderStatistics(AllOrderInfoRes allOrderInfoRes) {
return allOrderInfoMapper.orderStatistics(allOrderInfoRes, allOrderInfoRes.getDataRange() == null ? "" : allOrderInfoRes.getDataRange()[0],
@ -573,6 +578,10 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
cardCouponUserMapper.updateById(cardCouponUser);
}
MtOrder mtOrder = mtOrderMapper.selectByOrderNo(map.get("orderNo"));
if (ObjectUtil.isNotEmpty(mtOrder)) {
mtOrderMapper.updateStatusById(mtOrder.getId());
}
// 处理油品订单
OilOrder oilOrder = new OilOrder();
if (ObjectUtil.isNotEmpty(map.get("isOil")) && "true".equals(map.get("isOil"))) {
@ -639,6 +648,8 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
AccountInfo now = TokenUtil.getNowAccountInfo();
// 参数
String orderNo = map.get("orderNo");
AllOrderInfoVo allOrderInfo = allOrderInfoMapper.selectByOrderNo(orderNo);
String payType = allOrderInfo.getPayType();
// 1.根据 orderNo 查询 总订单表 收银台表 会员表 油品订单表
AllOrderInfo allOrder = selectAllOrderInfoByOrderNo(orderNo);
@ -652,7 +663,16 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
OilOrder oilOrder = null;
if (ObjectUtil.isNotEmpty(cashierOrder.getOilOrderId())) {
oilOrder = oilOrderMapper.selectById(cashierOrder.getOilOrderId());
// 更新油品订单状态
oilOrder.setOrderStatus("refund");
oilOrderMapper.updateById(oilOrder);
}
// 如果订单有商品
if (ObjectUtil.isNotEmpty(cashierOrder.getGoodsOrderId())) {
// 更新商品订单状态
mtOrderMapper.updateStatusById(cashierOrder.getGoodsOrderId());
}
// 3.如果支付类型 支付宝 微信 银联 则调用第三方支付接口 进行退款
if (allOrder.getPayType().equals("WECHAT") || allOrder.getPayType().equals("UNIONPAY") || allOrder.getPayType().equals("ALIPAY")) {
@ -714,11 +734,21 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
fleetMemberMapper.updateById(fleetMember);
}
if (orderNo.equals("card_value")) {
if (payType.equals("card_value")) {
CardBalanceChange cardBalance = new CardBalanceChange();
cardBalance.setUserId(allOrder.getUserId());
cardBalance.setStoreId(allOrder.getStoreId());
cardBalance.setChangeType("1");
cardBalance.setFromType("退款返还");
cardBalance.setBalance(allOrder.getPayMoney());
cardBalance.setAfterTheChange(userBalance.getCardBalance() + allOrder.getPayMoney());
cardBalance.setOrderNo(allOrder.getOrderNo());
cardBalanceChangeMapper.insert(cardBalance);
QueryWrapper<CardBalanceChange> q6 = Wrappers.query();
q6.eq("order_no", cashierOrder.getOrderNo());
q6.eq("change_type", "1");
CardBalanceChange cardBalanceChange = cardBalanceChangeMapper.selectOne(q6);
userBalance.setCardBalance(userBalance.getCardBalance() + cardBalanceChange.getBalance());
userBalance.setCardBalance(cardBalanceChange.getAfterTheChange());
userBalanceMapper.updateById(userBalance);
}

View File

@ -578,10 +578,15 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
ljOrder.setUserId(userId);
ljOrder.setAmount(goodsAmount);
ljOrder.setPayAmount(goodsActualPay);
ljOrder.setDiscount(goodsDiscount);
if (payUser.equals("散客")){
ljOrder.setAmount(goodsAmount);
ljOrder.setPayAmount(goodsAmount);
ljOrder.setDiscount(0.0);
}
ljOrder.setGoodsNum(Integer.valueOf(map.get("goodsNum")));
ljOrder.setUsePoint(usePoint);
ljOrder.setPointAmount(pointAmount);
ljOrder.setDiscount(goodsDiscount);
ljOrder.setStaffId(staffId);
ljOrder.setStatus(payStatus);
if (ObjectUtil.isNotEmpty(couponType) && couponType.equals("5")) ljOrder.setCouponUserId(couponUserId);
@ -703,6 +708,12 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
cashierOrder.setTerminal(terminal);
cashierOrder.setPayType(payType);
cashierOrder.setAfterDiscountAmount(oilAmount + goodsAmount - oilDiscount - goodsDiscount);
if (payUser.equals("散客")){
cashierOrder.setGoodsOrderAmount(goodsAmount);
cashierOrder.setGoodsPayAmount(goodsAmount);
cashierOrder.setGoodsDiscountAmount(0.0);
cashierOrder.setAfterDiscountAmount(goodsAmount);
}
// 如果金额不等于0调用第三方支付接口
if (!map.get("allAmount").equals("0") && !map.get("payType").equals("CASH") && !payType.equals("after_pay")

View File

@ -110,4 +110,6 @@ public interface LJUserMapper extends BaseMapper<LJUser> {
* @return
*/
Integer selectUserCountByChainStoreId(@Param("chainStoreId") Integer chainStoreId);
List<LJUserVo> findUserList(@Param("user") LJUserVo user);
}

View File

@ -418,4 +418,32 @@
mub.store_id = #{storeId} and mub.user_status = '0'
</where>
</select>
<select id="findUserList" resultType="com.fuint.business.userManager.vo.LJUserVo">
SELECT
mu.*
FROM
mt_user mu
LEFT JOIN mt_user_balance mub ON mu.id = mub.mt_user_id
<where>
<if test="user.userNo != null and user.userNo != ''">
and mu.user_no like concat('%', #{user.userNo}, '%')
</if>
<if test="user.gradeId != null and user.gradeId != ''">
and mub.grade_id = #{user.gradeId}
</if>
<if test="user.mobile != null and user.mobile != ''">
and mu.mobile like concat('%', #{user.mobile}, '%')
</if>
<if test="user.userStatus != null and user.userStatus != ''">
and mub.user_status = #{user.userStatus}
</if>
<if test="user.params.beginTime != null and user.params.beginTime != ''">
and mu.create_time &gt;= #{user.params.beginTime}
</if>
<if test="user.params.endTime != null and user.params.endTime != ''">
and mu.create_time &lt;= #{user.params.endTime}
</if>
</where>
</select>
</mapper>

View File

@ -293,7 +293,7 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
// Integer yesterdayAddNum = baseMapper.selectCount(queryWrapper1);
Integer yesterdayAddNum = userBalanceMapper.selectCount(queryWrapper1);
Integer rechargeTotal = cardValueRecordService.selectUserTotal(user);
Integer rechargeTotal = cardValueRecordService.selectUserTotal1(user);
map.put("balance",balance);
map.put("point",point);
// map.put("literCard",literCard);

View File

@ -3,6 +3,8 @@ package com.fuint.repository.mapper;
import com.fuint.repository.model.MtOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.Date;
@ -40,4 +42,8 @@ public interface MtOrderMapper extends BaseMapper<MtOrder> {
Integer getUserPayOrderCount(@Param("userId") Integer userId);
void updateStatusById(@Param("id")Integer goodsOrderId);
@Select("select * from mt_order where order_no = #{orderNo}")
MtOrder selectByOrderNo(String orderNo);
}

View File

@ -64,4 +64,10 @@
<select id="getUserPayOrderCount" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT t.ID) as num FROM mt_order t where t.USER_ID = #{userId} and t.PAY_STATUS='B' and t.STATUS != 'G'
</select>
<update id="updateStatusById">
update mt_order
set status = 'refund'
where id = #{id}
</update>
</mapper>

View File

@ -95,20 +95,20 @@
</div>
<div class="box2">
<div style="font-size: 26px;color: #FA6400;font-weight: bold;margin-top: 5px">
{{ orderStatistics.s7 || 0 }}/{{ orderStatistics.s6 || 0 }}
{{ orderStatistics.s6 || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #FA6400"></div>
<div style="font-weight: bold;font-size: 13px;margin-left: 5px">油品订单/实付总金额</div>
<div style="font-weight: bold;font-size: 13px;margin-left: 5px">油品订单实付总金额</div>
</div>
</div>
<div class="box2">
<div style="font-size: 26px;color: #FE59E5;font-weight: bold;margin-top: 5px">
{{ orderStatistics.s9 || 0 }}/{{ orderStatistics.s8 || 0 }}
{{ orderStatistics.s8 || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #FE59E5"></div>
<div style="font-weight: bold;font-size: 13px;margin-left: 5px">商品订单/实付总金额</div>
<div style="font-weight: bold;font-size: 13px;margin-left: 5px">商品订单实付总金额</div>
</div>
</div>

View File

@ -51,14 +51,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="payUser">
<el-form-item prop="status">
<el-select v-model="queryParams.status" placeholder="请选择订单状态" clearable>
<el-option label="支付成功" value="paid" />
<el-option label="退款成功" value="refund" />
<el-option label="支付失败" value="unpaid" />
</el-select>
</el-form-item>
<!-- <el-form-item label="" prop="payUser">
<el-input
v-model="queryParams.payUser"
placeholder="请输入付款用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="">
<el-date-picker
v-model="beginTime"
@ -99,7 +108,7 @@
</div>
<div class="box2">
<div class="x_size" style="font-size: 26px;color: #00CAFF;font-weight: bold;margin-top: 5px">
{{ orderStatistics.theTotalAmount || 0 }}
{{ orderStatistics.theTotalPayAmount || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #00CAFF"></div>
@ -175,9 +184,9 @@
</el-table-column>
<el-table-column label="订单状态" align="center" prop="payType">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 'unpaid'">支付</el-tag>
<el-tag type="success" v-else-if="scope.row.status == 'paid'">支付</el-tag>
<el-tag type="danger" v-else-if="scope.row.status === 'refund'">退款</el-tag>
<el-tag v-if="scope.row.status == 'unpaid'">支付失败</el-tag>
<el-tag type="success" v-else-if="scope.row.status == 'paid'">支付成功</el-tag>
<el-tag type="danger" v-else-if="scope.row.status === 'refund'">退款成功</el-tag>
<el-tag type="danger" v-else>支付失败</el-tag>
</template>
</el-table-column>
@ -388,6 +397,10 @@ export default {
queryParams: {
page: 1,
pageSize: 10,
orderNo: '',
terminal: '',
payType: '',
status: ''
},
orderGoods: '',
//

View File

@ -159,7 +159,7 @@
</div>
<div class="box2">
<div style="font-size: 26px;color: #FE59E5;font-weight: bold;margin-top: 5px">
{{ orderStatistics.wechat || 0 }}/{{ orderStatistics.alipay || 0 }}
{{ orderStatistics.cardValue || 0 }}/{{ orderStatistics.fuleCard || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #FE59E5"></div>
@ -218,10 +218,9 @@
</el-table-column>
<el-table-column prop="orderStatus" label="订单状态" align="center" >
<template slot-scope="scope">
<el-tag v-if="scope.row.orderStatus === 'unpaid'">未支付</el-tag>
<el-tag type="success" v-else-if="scope.row.orderStatus === 'paid'">已支付</el-tag>
<el-tag type="danger" v-else-if="scope.row.orderStatus === 'refund'">已退款</el-tag>
<el-tag type="danger" v-else>支付失败</el-tag>
<el-tag type="success" v-if="scope.row.orderStatus === 'paid'">支付成功</el-tag>
<el-tag type="danger" v-else-if="scope.row.orderStatus === 'refund'">退款成功</el-tag>
<el-tag v-else>支付失败</el-tag>
</template>
</el-table-column>
<!-- <el-table-column prop="orderType" label="订单类型" align="center"></el-table-column>-->

View File

@ -71,7 +71,7 @@
<div class="box-gang">
<div class="box2">
<div style="font-size: 26px;color: #0DC291;font-weight: bold;margin-top: 5px">
{{ orderStatistics.totalAmountReceived || 0 }}/{{ orderStatistics.numberOfTopUps || 0 }}
{{ orderStatistics.theTotalAmountOfTopUp || 0 }}/{{ orderStatistics.numberOfTopUps || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #0DC291"></div>
@ -80,7 +80,7 @@
</div>
<div class="box2">
<div style="font-size: 26px;color: #00CAFF;font-weight: bold;margin-top: 5px">
{{ orderStatistics.theTotalAmountOfTopUp || 0 }}
{{ orderStatistics.totalAmountReceived || 0 }}
</div>
<div class="size-hui">
<div style="width: 8px;height: 8px;border-radius: 4px;background: #00CAFF"></div>
@ -146,7 +146,7 @@
<el-table-column prop="mobile" label="手机号" align="center"></el-table-column>
<el-table-column prop="rechargeBalance" label="充值金额(元)" align="center"></el-table-column>
<el-table-column prop="giftBalance" label="赠送金额(元)" align="center"></el-table-column>
<el-table-column prop="giftBalance" label="会员总余额(元)" align="center">
<el-table-column prop="giftBalance" label="到账余额(元)" align="center">
<template slot-scope="scope">
<span>{{ scope.row.rechargeBalance + scope.row.giftBalance }}</span>
</template>