Browse Source

优惠券

fanzherong_v 3 months ago
parent
commit
c78d20d4d4
12 changed files with 181 additions and 49 deletions
  1. 34 12
      snowy-admin-web/src/views/biz/couponrecord/index.vue
  2. 26 14
      snowy-admin-web/src/views/biz/member/form.vue
  3. 8 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/controller/ConsumptionRecordController.java
  4. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/mapper/ConsumptionRecordMapper.java
  5. 10 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/mapper/mapping/ConsumptionRecordMapper.xml
  6. 14 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/param/ConsumptionResult.java
  7. 3 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/ConsumptionRecordService.java
  8. 22 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/impl/ConsumptionRecordServiceImpl.java
  9. 16 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/entity/BizCouponRecord.java
  10. 4 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/mapper/BizCouponRecordMapper.java
  11. 24 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/mapper/mapping/BizCouponRecordMapper.xml
  12. 17 10
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/service/impl/BizCouponRecordServiceImpl.java

+ 34 - 12
snowy-admin-web/src/views/biz/couponrecord/index.vue

@@ -9,7 +9,9 @@
 				</a-col>
 				</a-col>
 				<a-col :span="6">
 				<a-col :span="6">
 					<a-form-item label="是否核销" name="couponStatus">
 					<a-form-item label="是否核销" name="couponStatus">
-						<a-input v-model:value="searchFormState.couponStatus" placeholder="是否核销查询" />
+<!--						<a-input v-model:value="searchFormState.couponStatus" placeholder="是否核销查询" />-->
+						<a-select v-model:value="searchFormState.couponStatus" placeholder="是否核销查询" :options="couponStatusList">
+						</a-select>
 					</a-form-item>
 					</a-form-item>
 				</a-col>
 				</a-col>
 				<a-col :span="6">
 				<a-col :span="6">
@@ -40,7 +42,7 @@
 					/>
 					/>
 				</a-space>
 				</a-space>
 			</template>
 			</template>
-			<template #bodyCell="{ column, record }">
+			<template #bodyCell="{ column, record , index }">
 				<template v-if="column.dataIndex === 'action'">
 				<template v-if="column.dataIndex === 'action'">
 					<a-space>
 					<a-space>
 						<a @click="formRef.onOpen(record)" v-if="hasPerm('bizCouponRecordEdit')">编辑</a>
 						<a @click="formRef.onOpen(record)" v-if="hasPerm('bizCouponRecordEdit')">编辑</a>
@@ -50,6 +52,9 @@
 						</a-popconfirm>
 						</a-popconfirm>
 					</a-space>
 					</a-space>
 				</template>
 				</template>
+				<template v-if="column.dataIndex === 'serial'">
+					{{ index + 1 }}
+				</template>
 				<template v-if="column.dataIndex === 'couponStatus'">
 				<template v-if="column.dataIndex === 'couponStatus'">
 					<a-tag
 					<a-tag
 						:color="
 						:color="
@@ -73,51 +78,68 @@
 	import { cloneDeep } from 'lodash-es'
 	import { cloneDeep } from 'lodash-es'
 	import Form from './form.vue'
 	import Form from './form.vue'
 	import bizCouponRecordApi from '@/api/biz/bizCouponRecordApi'
 	import bizCouponRecordApi from '@/api/biz/bizCouponRecordApi'
+	import tool from '@/utils/tool'
 	const searchFormState = ref({})
 	const searchFormState = ref({})
 	const searchFormRef = ref()
 	const searchFormRef = ref()
 	const tableRef = ref()
 	const tableRef = ref()
 	const formRef = ref()
 	const formRef = ref()
 	const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false }
 	const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false }
+	const couponStatusList = tool.dictList('is_destroy')
 	const columns = [
 	const columns = [
+		{
+			title: '序号',
+			dataIndex: 'serial',
+			align: 'center',
+			width: 50
+		},
 		{
 		{
 			title: '优惠券编码',
 			title: '优惠券编码',
 			dataIndex: 'couponNo',
 			dataIndex: 'couponNo',
-			align: 'center'
+			align: 'center',
+			width: 200
 		},
 		},
 		{
 		{
 			title: '优惠券生成时间',
 			title: '优惠券生成时间',
 			dataIndex: 'time',
 			dataIndex: 'time',
-			align: 'center'
+			align: 'center',
+			width: 150
 		},
 		},
 		{
 		{
 			title: '是否核销',
 			title: '是否核销',
 			dataIndex: 'couponStatus',
 			dataIndex: 'couponStatus',
-			align: 'center'
+			align: 'center',
+			width: 80
+
 		},
 		},
 		{
 		{
 			title: '有效期开始时间',
 			title: '有效期开始时间',
 			dataIndex: 'startTime',
 			dataIndex: 'startTime',
-			align: 'center'
+			align: 'center',
+			width: 150
 		},
 		},
 		{
 		{
 			title: '有效期截止时间',
 			title: '有效期截止时间',
 			dataIndex: 'endTime',
 			dataIndex: 'endTime',
-			align: 'center'
+			align: 'center',
+			width: 150
 		},
 		},
 		{
 		{
 			title: '核销人',
 			title: '核销人',
-			dataIndex: 'destroyUser',
-			align: 'center'
+			dataIndex: 'destroyUserName',
+			align: 'center',
+			width: 120
 		},
 		},
 		{
 		{
 			title: '核销时间',
 			title: '核销时间',
 			dataIndex: 'destroyTime',
 			dataIndex: 'destroyTime',
-			align: 'center'
+			align: 'center',
+			width: 150
 		},
 		},
 		{
 		{
 			title: '核销门店',
 			title: '核销门店',
-			dataIndex: 'orgId',
-			align: 'center'
+			dataIndex: 'destroyOrgName',
+			align: 'center',
+			width: 150
 		},
 		},
 	]
 	]
 	// 操作栏通过权限判断是否显示
 	// 操作栏通过权限判断是否显示

+ 26 - 14
snowy-admin-web/src/views/biz/member/form.vue

@@ -45,7 +45,7 @@
 		</a-form>
 		</a-form>
 		<template #footer>
 		<template #footer>
 			<a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
 			<a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
-			<a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
+			<a-button type="primary" @click="onSubmit" :loading="submitLoading">提交</a-button>
 		</template>
 		</template>
 	</xn-form-container>
 	</xn-form-container>
 </template>
 </template>
@@ -54,6 +54,9 @@
 	import { cloneDeep } from 'lodash-es'
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
 	import { required } from '@/utils/formRules'
 	import consumptionRecordApi from '@/api/biz/consumptionRecordApi'
 	import consumptionRecordApi from '@/api/biz/consumptionRecordApi'
+	import { Modal } from 'ant-design-vue'
+	import { createVNode } from 'vue'
+	import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
 	// 抽屉状态
 	// 抽屉状态
 	const open = ref(false)
 	const open = ref(false)
 	const emit = defineEmits({ successful: null })
 	const emit = defineEmits({ successful: null })
@@ -95,22 +98,31 @@
 	}
 	}
 	// 验证并提交数据
 	// 验证并提交数据
 	const onSubmit = () => {
 	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
+		Modal.confirm({
+			title: '确定要为'+formData.value.name+(formData.value.consumptionOperate=='1'?'赠送':'扣减')+(formData.value.consumptionType=='1'?'代金券':'余额')+formData.value.consumptionMoney+'元吗?',
+			icon: createVNode(ExclamationCircleOutlined),
+			content: '',
+			onOk() {
 				submitLoading.value = true
 				submitLoading.value = true
-				const formDataParam = cloneDeep(formData.value)
-				consumptionRecordApi
-					.consumptionRecordSubmitForm(formDataParam, formDataParam.id)
+				formRef.value
+					.validate()
 					.then(() => {
 					.then(() => {
-						onClose()
-						emit('successful')
+						submitLoading.value = true
+						const formDataParam = cloneDeep(formData.value)
+						consumptionRecordApi
+							.consumptionRecordSubmitForm(formDataParam, formDataParam.id)
+							.then(() => {
+								onClose()
+								emit('successful')
+							})
+							.finally(() => {
+								submitLoading.value = false
+							})
 					})
 					})
-					.finally(() => {
-						submitLoading.value = false
-					})
-			})
-			.catch(() => {})
+					.catch(() => {})
+			},
+			onCancel() {}
+		})
 	}
 	}
 	// 抛出函数
 	// 抛出函数
 	defineExpose({
 	defineExpose({

+ 8 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/controller/ConsumptionRecordController.java

@@ -21,14 +21,11 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.biz.modular.consumptionrecord.param.*;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.annotation.CommonNoRepeat;
 import vip.xiaonuo.common.annotation.CommonNoRepeat;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordAddParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordEditParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordIdParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordPageParam;
 import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
 import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
 
 
 import jakarta.annotation.Resource;
 import jakarta.annotation.Resource;
@@ -122,4 +119,11 @@ public class ConsumptionRecordController {
     public CommonResult<ConsumptionRecord> detail(@Valid ConsumptionRecordIdParam consumptionRecordIdParam) {
     public CommonResult<ConsumptionRecord> detail(@Valid ConsumptionRecordIdParam consumptionRecordIdParam) {
         return CommonResult.data(consumptionRecordService.detail(consumptionRecordIdParam));
         return CommonResult.data(consumptionRecordService.detail(consumptionRecordIdParam));
     }
     }
+
+    @Operation(summary = "门店每日销售额统计")
+    @SaCheckPermission("/biz/consumptionrecord/getRecordTotal")
+    @GetMapping("/biz/consumptionrecord/getRecordTotal")
+    public CommonResult<ConsumptionResult> getRecordTotal() {
+        return CommonResult.data(consumptionRecordService.getRecordTotal());
+    }
 }
 }

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/mapper/ConsumptionRecordMapper.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
+import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionResult;
 
 
 /**
 /**
  * 消费记录Mapper接口
  * 消费记录Mapper接口
@@ -26,4 +27,6 @@ import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
  **/
  **/
 public interface ConsumptionRecordMapper extends BaseMapper<ConsumptionRecord> {
 public interface ConsumptionRecordMapper extends BaseMapper<ConsumptionRecord> {
     Page<ConsumptionRecord> getPageList(@Param("page") Page<ConsumptionRecord> page, @Param("ew") QueryWrapper<ConsumptionRecord> ew);
     Page<ConsumptionRecord> getPageList(@Param("page") Page<ConsumptionRecord> page, @Param("ew") QueryWrapper<ConsumptionRecord> ew);
+
+    ConsumptionResult getRecordTotal(@Param("ew") QueryWrapper<ConsumptionRecord> ew);
 }
 }

+ 10 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/mapper/mapping/ConsumptionRecordMapper.xml

@@ -26,4 +26,14 @@
             ${ew.sqlSegment}
             ${ew.sqlSegment}
         </where>
         </where>
     </select>
     </select>
+
+    <select id="getRecordTotal" resultType="vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionResult">
+        select
+            count(*) orderCount,
+            sum(bcr.consumption_money) orderMoney
+        from biz_consumption_record bcr
+        <where>
+            ${ew.sqlSegment}
+        </where>
+    </select>
 </mapper>
 </mapper>

+ 14 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/param/ConsumptionResult.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.biz.modular.consumptionrecord.param;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ConsumptionResult {
+    /**当日订单竖*/
+    private Integer orderCount;
+
+    /**当日销售额*/
+    private BigDecimal orderMoney;
+}

+ 3 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/ConsumptionRecordService.java

@@ -15,10 +15,7 @@ package vip.xiaonuo.biz.modular.consumptionrecord.service;
 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 vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordAddParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordEditParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordIdParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordPageParam;
+import vip.xiaonuo.biz.modular.consumptionrecord.param.*;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -77,4 +74,6 @@ public interface ConsumptionRecordService extends IService<ConsumptionRecord> {
      * @date  2025/02/06 08:56
      * @date  2025/02/06 08:56
      **/
      **/
     ConsumptionRecord queryEntity(String id);
     ConsumptionRecord queryEntity(String id);
+
+    ConsumptionResult getRecordTotal();
 }
 }

+ 22 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/impl/ConsumptionRecordServiceImpl.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.consumptionrecord.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.PhoneUtil;
 import cn.hutool.core.util.PhoneUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
@@ -22,9 +23,11 @@ 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 jakarta.annotation.Resource;
 import jakarta.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.biz.modular.consumptionrecord.param.*;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.service.BizUserService;
 import vip.xiaonuo.biz.modular.user.service.BizUserService;
 import vip.xiaonuo.biz.modular.userfundchangerecord.entity.BizUserFundChangeRecord;
 import vip.xiaonuo.biz.modular.userfundchangerecord.entity.BizUserFundChangeRecord;
@@ -35,10 +38,6 @@ import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
 import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
 import vip.xiaonuo.biz.modular.consumptionrecord.mapper.ConsumptionRecordMapper;
 import vip.xiaonuo.biz.modular.consumptionrecord.mapper.ConsumptionRecordMapper;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordAddParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordEditParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordIdParam;
-import vip.xiaonuo.biz.modular.consumptionrecord.param.ConsumptionRecordPageParam;
 import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
 import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
 import vip.xiaonuo.common.util.CommonCryptogramUtil;
 import vip.xiaonuo.common.util.CommonCryptogramUtil;
 
 
@@ -282,4 +281,23 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
         }
         }
         return consumptionRecord;
         return consumptionRecord;
     }
     }
+
+    @Override
+    public ConsumptionResult getRecordTotal() {
+        String format = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
+        QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
+        // 校验数据范围
+        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
+        if (ObjectUtil.isNotEmpty(loginUserDataScope)) {
+            queryWrapper.in("bcr.consumption_org", loginUserDataScope);
+        }else{
+            ConsumptionResult consumptionResult = new ConsumptionResult();
+            consumptionResult.setOrderCount(0);
+            consumptionResult.setOrderMoney(new BigDecimal(0));
+            return consumptionResult;
+        }
+        queryWrapper.in("bcr.consumption_operate",'3','4');
+        queryWrapper.between("bcr.consumption_time", format+" 00:00:00",format+" 23:59:59");
+        return this.getBaseMapper().getRecordTotal(queryWrapper);
+    }
 }
 }

+ 16 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/entity/BizCouponRecord.java

@@ -77,4 +77,20 @@ public class BizCouponRecord extends CommonEntity {
     @Schema(description = "核销门店")
     @Schema(description = "核销门店")
     private String orgId;
     private String orgId;
 
 
+    /**核销人姓名*/
+    @TableField(exist = false)
+    private String destroyUserName;
+    /**核销门店*/
+    @TableField(exist = false)
+    private String destroyOrgName;
+    /**优惠券金额*/
+    @TableField(exist = false)
+    private String couponAmount;
+    /**会员姓名*/
+    @TableField(exist = false)
+    private String userName;
+    /**会员手机号*/
+    @TableField(exist = false)
+    private String phone;
+
 }
 }

+ 4 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/mapper/BizCouponRecordMapper.java

@@ -12,7 +12,10 @@
  */
  */
 package vip.xiaonuo.biz.modular.couponrecord.mapper;
 package vip.xiaonuo.biz.modular.couponrecord.mapper;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.biz.modular.couponrecord.entity.BizCouponRecord;
 import vip.xiaonuo.biz.modular.couponrecord.entity.BizCouponRecord;
 
 
 /**
 /**
@@ -22,4 +25,5 @@ import vip.xiaonuo.biz.modular.couponrecord.entity.BizCouponRecord;
  * @date  2025/02/06 17:38
  * @date  2025/02/06 17:38
  **/
  **/
 public interface BizCouponRecordMapper extends BaseMapper<BizCouponRecord> {
 public interface BizCouponRecordMapper extends BaseMapper<BizCouponRecord> {
+    Page<BizCouponRecord> getPageList(@Param("page") Page<BizCouponRecord> page, @Param("ew") QueryWrapper<BizCouponRecord> ew);
 }
 }

+ 24 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/mapper/mapping/BizCouponRecordMapper.xml

@@ -2,4 +2,27 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.biz.modular.couponrecord.mapper.BizCouponRecordMapper">
 <mapper namespace="vip.xiaonuo.biz.modular.couponrecord.mapper.BizCouponRecordMapper">
 
 
-</mapper>
+    <select id="getPageList" resultType="vip.xiaonuo.biz.modular.couponrecord.entity.BizCouponRecord">
+        select
+            bcr.id,
+            bcr.coupon_no,
+            bcr.time,
+            bcr.coupon_status,
+            bcr.start_time,
+            bcr.end_time,
+            bcr.destroy_user,
+            bcr.destroy_time,
+            bcr.org_id,
+            su.name userName,
+            su.phone,
+            u.name destroyUserName,
+            so.name destroyOrgName,
+            brr.coupon_amount
+        from biz_coupon_record bcr
+        left join biz_recharge_record brr on bcr.recharge_record_id = brr.id
+        left join SYS_USER su on su.id = brr.user_id
+        left join SYS_USER u on u.id = bcr.destroy_user
+        left join SYS_ORG so on so.id = bcr.org_id
+        ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 17 - 10
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/couponrecord/service/impl/BizCouponRecordServiceImpl.java

@@ -33,6 +33,7 @@ import vip.xiaonuo.biz.modular.couponrecord.param.BizCouponRecordEditParam;
 import vip.xiaonuo.biz.modular.couponrecord.param.BizCouponRecordIdParam;
 import vip.xiaonuo.biz.modular.couponrecord.param.BizCouponRecordIdParam;
 import vip.xiaonuo.biz.modular.couponrecord.param.BizCouponRecordPageParam;
 import vip.xiaonuo.biz.modular.couponrecord.param.BizCouponRecordPageParam;
 import vip.xiaonuo.biz.modular.couponrecord.service.BizCouponRecordService;
 import vip.xiaonuo.biz.modular.couponrecord.service.BizCouponRecordService;
+import vip.xiaonuo.common.util.CommonCryptogramUtil;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
@@ -50,19 +51,25 @@ public class BizCouponRecordServiceImpl extends ServiceImpl<BizCouponRecordMappe
     public Page<BizCouponRecord> page(BizCouponRecordPageParam bizCouponRecordPageParam) {
     public Page<BizCouponRecord> page(BizCouponRecordPageParam bizCouponRecordPageParam) {
         QueryWrapper<BizCouponRecord> queryWrapper = new QueryWrapper<BizCouponRecord>().checkSqlInjection();
         QueryWrapper<BizCouponRecord> queryWrapper = new QueryWrapper<BizCouponRecord>().checkSqlInjection();
         if(ObjectUtil.isNotEmpty(bizCouponRecordPageParam.getCouponNo())) {
         if(ObjectUtil.isNotEmpty(bizCouponRecordPageParam.getCouponNo())) {
-            queryWrapper.lambda().like(BizCouponRecord::getCouponNo, bizCouponRecordPageParam.getCouponNo());
+            queryWrapper.like("bcr.coupon_no", bizCouponRecordPageParam.getCouponNo());
         }
         }
         if(ObjectUtil.isNotEmpty(bizCouponRecordPageParam.getCouponStatus())) {
         if(ObjectUtil.isNotEmpty(bizCouponRecordPageParam.getCouponStatus())) {
-            queryWrapper.lambda().eq(BizCouponRecord::getCouponStatus, bizCouponRecordPageParam.getCouponStatus());
+            queryWrapper.eq("bcr.coupon_status", bizCouponRecordPageParam.getCouponStatus());
         }
         }
-        if(ObjectUtil.isAllNotEmpty(bizCouponRecordPageParam.getSortField(), bizCouponRecordPageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(bizCouponRecordPageParam.getSortOrder());
-            queryWrapper.orderBy(true, bizCouponRecordPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(bizCouponRecordPageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(BizCouponRecord::getId);
+        // 校验数据范围
+        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
+        if (ObjectUtil.isEmpty(loginUserDataScope)) {
+            queryWrapper.in("brr.user_id", StpLoginUserUtil.getLoginUser().getId());
         }
         }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        queryWrapper.orderByDesc("bcr.create_time");
+        Page<BizCouponRecord> pageList = this.getBaseMapper().getPageList(CommonPageRequest.defaultPage(), queryWrapper);
+        for(BizCouponRecord bizCouponRecord : pageList.getRecords()){
+            if(ObjectUtil.isNotEmpty(bizCouponRecord.getPhone())){
+                //电话号码解密
+                bizCouponRecord.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(bizCouponRecord.getPhone()));
+            }
+        }
+        return pageList;
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -132,6 +139,6 @@ public class BizCouponRecordServiceImpl extends ServiceImpl<BizCouponRecordMappe
         bizCouponRecord.setDestroyTime(new Date());
         bizCouponRecord.setDestroyTime(new Date());
         //核销门店
         //核销门店
         bizCouponRecord.setOrgId(StpLoginUserUtil.getLoginUser().getOrgId());
         bizCouponRecord.setOrgId(StpLoginUserUtil.getLoginUser().getOrgId());
-        this.save(bizCouponRecord);
+        this.updateById(bizCouponRecord);
     }
     }
 }
 }