| admin/src/api/business/inviteRecord.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| admin/src/views/business/inviteRecord.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/dmmall_admin/src/main/java/com/doumee/api/business/InviteRecordController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
admin/src/api/business/inviteRecord.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ import request from '../../utils/request' // æ¥è¯¢ export function fetchList (data) { return request.post('/business/inviteRecord/page', data, { trim: true }) } export function exportExcel (data) { return request.post('/business/inviteRecord/exportExcel', data, { trim: true, download: true }) } admin/src/views/business/inviteRecord.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,106 @@ <template> <TableLayout :permissions="['business:membercoupon:query']"> <!-- æç´¢è¡¨å --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <el-form-item label="é请人信æ¯" prop="recName" > <el-input v-model="searchForm.recName" placeholder="请é请人æµç§°/å§å/ææºå· " clearable @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="被é请人信æ¯" prop="name" > <el-input v-model="searchForm.name" placeholder="被é请人æµç§°/å§å/ææºå· " clearable @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="宿鶿®µ" prop="getMethod"> <el-select v-model="searchForm.firstOrderStatus" placeholder="è¯·éæ©å®æé¶æ®µ" clearable @change="search" > <el-option :value="0" label="已注å"></el-option> <el-option :value="1" label="已宿é¦å"></el-option> </el-select> </el-form-item> <section> <el-button type="primary" @click="search">æç´¢</el-button> <el-button @click="reset">éç½®</el-button> </section> </el-form> <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:membercoupon:create', 'business:membercoupon:exportExcel']"> <li><el-button type="primary" @click="$refs.OperaMemberCouponWindow.open('å®å忾伿 å¸', null)" v-permissions="['business:membercoupon:create']">å®ååæ¾</el-button></li> <li> <el-button type="primary" :loading="isWorking.export" v-permissions="['business:membercoupon:exportExcel']" @click="exportExcel">导åº</el-button></li> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe > <el-table-column prop="nikeName" label="被é请人微信ID" min-width="180px"></el-table-column> <el-table-column prop="name" label="被é请人信æ¯" min-width="180px"></el-table-column> <el-table-column prop="recName" label="é请人信æ¯" min-width="180px"></el-table-column> <el-table-column prop="firstOrderStatus" label="宿鶿®µ" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.firstOrderStatus ===1" class="green">宿é¦å</span> <span v-else class="orange">已注å</span> </template> </el-table-column> <el-table-column prop="startDate" label="ä½¿ç¨æææ" align="center" min-width="210px"> <template slot-scope="{row}"> <li> èµ·ï¼{{ row.startDate}}</li> <li>æ¢ï¼{{row.endDate }}</li> </template> </el-table-column> <el-table-column prop="couponPrice" label="伿 éé¢(å )" min-width="120px"> <template slot-scope="{row}"> {{row.status==1?(row.couponPrice||0):'-'}} </template> </el-table-column> <el-table-column prop="status" label="ç¶æ" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.status ===0" class="green"> æªä½¿ç¨</span> <span v-else-if="row.status ===1" class="blue"> 已使ç¨</span> <span v-else class="grey">å·²è¿æ</span> </template> </el-table-column> <el-table-column prop="createDate" label="é¦å宿æ¶é´" min-width="150px"></el-table-column> <el-table-column prop="createDate" label="æ³¨åæ¶é´" min-width="150px"></el-table-column> <el-table-column prop="creatorName" label="æä½äºº" min-width="100px"></el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" > </pagination> </template> <OperaMemberCouponWindow ref="OperaMemberCouponWindow" @success="handlePageChange"/> </TableLayout> </template> <script> import BaseTable from '@/components/base/BaseTable' import TableLayout from '@/layouts/TableLayout' import OperaMemberCouponWindow from '@/components/business/OperaMemberCouponWindow' import Pagination from '@/components/common/Pagination' export default { name: 'inviteRecord', extends: BaseTable, components: { TableLayout, Pagination ,OperaMemberCouponWindow}, data () { return { // æç´¢ searchForm: { recName: '', name: '', firstOrderStatus: '' } } }, created () { this.config({ module: 'æ¨èè®°å½è¡¨', api: '/business/inviteRecord', 'field.id': 'id', 'field.main': 'id' }) this.search() } } </script> server/dmmall_admin/src/main/java/com/doumee/api/business/InviteRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,85 @@ package com.doumee.api.business; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.InviteRecord; import com.doumee.core.utils.Utils; import com.doumee.service.business.InviteRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import com.doumee.api.BaseController; /** * ç¨æ·é请记å½Controllerå®ä¹ * @author doumee * @date 2026-01-20 15:51:22 */ @Api(tags = "tableNameæ¥å£") @RestController @RequestMapping("/business/inviteRecord") public class InviteRecordController extends BaseController { @Autowired private InviteRecordService inviteRecordService; @PreventRepeat @ApiOperation("æ°å»º") @PostMapping("/create") @RequiresPermissions("business:inviterecord:create") public ApiResponse create(@RequestBody InviteRecord inviteRecord) { return ApiResponse.success(inviteRecordService.create(inviteRecord)); } @ApiOperation("æ ¹æ®IDå é¤") @GetMapping("/delete/{id}") @RequiresPermissions("business:inviterecord:delete") public ApiResponse deleteById(@PathVariable Integer id) { inviteRecordService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("business:inviterecord:delete") public ApiResponse deleteByIdInBatch(@RequestParam String ids) { inviteRecordService.deleteByIdInBatch(this.getIdList(ids)); return ApiResponse.success(null); } @ApiOperation("æ ¹æ®IDä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("business:inviterecord:update") public ApiResponse updateById(@RequestBody InviteRecord inviteRecord) { inviteRecordService.updateById(inviteRecord); return ApiResponse.success(null); } @ApiOperation("å页æ¥è¯¢") @PostMapping("/page") @RequiresPermissions("business:inviterecord:query") public ApiResponse<PageData<InviteRecord>> findPage (@RequestBody PageWrap<InviteRecord> pageWrap) { return ApiResponse.success(inviteRecordService.findPage(pageWrap)); } @ApiOperation("导åºExcel") @PostMapping("/exportExcel") @RequiresPermissions("business:inviterecord:exportExcel") public void exportExcel (@RequestBody PageWrap<InviteRecord> pageWrap, HttpServletResponse response) { ExcelExporter.build(InviteRecord.class).export(inviteRecordService.findPage(pageWrap).getRecords(), "ä¼åé请记å½è¡¨", response); } @ApiOperation("æ ¹æ®IDæ¥è¯¢") @GetMapping("/{id}") @RequiresPermissions("business:inviterecord:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(inviteRecordService.findById(id)); } } server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java
@@ -2,14 +2,9 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Integral; import com.doumee.dao.web.dto.IntegralDTO; import com.doumee.dao.web.dto.IntegralRecordDTO; import com.doumee.dao.web.request.DealIntegralRequest; import com.doumee.dao.web.response.IntegralDataResponse; import com.doumee.dao.business.model.InviteRecord; import com.doumee.dao.web.response.InviteInfoResponse; import java.math.BigDecimal; import java.util.List; /** @@ -22,5 +17,90 @@ InviteInfoResponse getInviteInfo(Integer memberId); String createShareImg(Integer memberId) throws Exception; /** * å建 * * @param model å®ä½å¯¹è±¡ * @return Integer */ Integer create(InviteRecord model); /** * 主é®å é¤ * * @param id ä¸»é® */ void deleteById(Integer id); /** * å é¤ * * @param model å®ä½å¯¹è±¡ */ void delete(InviteRecord model); /** * æ¹é主é®å é¤ * * @param ids 主é®é */ void deleteByIdInBatch(List<Integer> ids); /** * 䏻鮿´æ° * * @param model å®ä½å¯¹è±¡ */ void updateById(InviteRecord model); /** * æ¹é䏻鮿´æ° * * @param model å®ä½é */ void updateByIdInBatch(List<InviteRecord> model); /** * 䏻鮿¥è¯¢ * * @param id ä¸»é® * @return model */ InviteRecord findById(Integer id); /** * æ¡ä»¶æ¥è¯¢åæ¡è®°å½ * * @param model å®ä½å¯¹è±¡ * @return InviteRecord */ InviteRecord findOne(InviteRecord model); /** * æ¡ä»¶æ¥è¯¢ * * @param model å®ä½å¯¹è±¡ * @return List<InviteRecord> */ List<InviteRecord> findList(InviteRecord model); /** * å页æ¥è¯¢ * * @param pageWrap å页对象 * @return PageData<InviteRecord> */ PageData<InviteRecord> findPage(PageWrap<InviteRecord> pageWrap); /** * æ¡ä»¶ç»è®¡ * * @param model å®ä½å¯¹è±¡ * @return long */ long count(InviteRecord model); } server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
@@ -132,7 +132,7 @@ @Override public void deleteById(Integer id) { Activity activity = new Activity(); activity.setIsdeleted(Constants.ZERO); activity.setIsdeleted(Constants.ONE); activity.setId(id); activityMapper.updateById(activity); } server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
@@ -131,7 +131,105 @@ } @Override public Integer create(InviteRecord inviteRecord) { inviteRecordMapper.insert(inviteRecord); return inviteRecord.getId(); } @Override public void deleteById(Integer id) { inviteRecordMapper.deleteById(id); } @Override public void delete(InviteRecord inviteRecord) { UpdateWrapper<InviteRecord> deleteWrapper = new UpdateWrapper<>(inviteRecord); inviteRecordMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List<Integer> ids) { if (CollectionUtils.isEmpty(ids)) { return; } inviteRecordMapper.deleteBatchIds(ids); } @Override public void updateById(InviteRecord inviteRecord) { inviteRecordMapper.updateById(inviteRecord); } @Override public void updateByIdInBatch(List<InviteRecord> inviteRecords) { if (CollectionUtils.isEmpty(inviteRecords)) { return; } for (InviteRecord inviteRecord: inviteRecords) { this.updateById(inviteRecord); } } @Override public InviteRecord findById(Integer id) { return inviteRecordMapper.selectById(id); } @Override public InviteRecord findOne(InviteRecord inviteRecord) { QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord).last("limit 1"); return inviteRecordMapper.selectOne(wrapper); } @Override public List<InviteRecord> findList(InviteRecord inviteRecord) { QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord); return inviteRecordMapper.selectList(wrapper); } @Override public PageData<InviteRecord> findPage(PageWrap<InviteRecord> pageWrap) { IPage<InviteRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper<InviteRecord> queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,InviteRecord::getId, pageWrap.getModel().getId()); queryWrapper.lambda().eq(pageWrap.getModel().getCreator() != null,InviteRecord::getCreator, pageWrap.getModel().getCreator()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(InviteRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getEditor() != null,InviteRecord::getEditor, pageWrap.getModel().getEditor()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(InviteRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getIsdeleted() != null,InviteRecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,InviteRecord::getRemark, pageWrap.getModel().getRemark()); queryWrapper.lambda().eq(pageWrap.getModel().getInviteId() != null,InviteRecord::getInviteId, pageWrap.getModel().getInviteId()); queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null,InviteRecord::getMemberId, pageWrap.getModel().getMemberId()); queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,InviteRecord::getPhone, pageWrap.getModel().getPhone()); queryWrapper.lambda().eq(pageWrap.getModel().getFirstOrderStatus() != null,InviteRecord::getFirstOrderStatus, pageWrap.getModel().getFirstOrderStatus()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().ge(InviteRecord::getFirstFinishDate, Utils.Date.getStart(pageWrap.getModel().getFirstFinishDate())); queryWrapper.lambda().le(InviteRecord::getFirstFinishDate, Utils.Date.getEnd(pageWrap.getModel().getFirstFinishDate())); } queryWrapper.lambda().eq(pageWrap.getModel().getRewardIntegral() != null,InviteRecord::getRewardIntegral, pageWrap.getModel().getRewardIntegral()); for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(inviteRecordMapper.selectPage(page, queryWrapper)); } @Override public long count(InviteRecord inviteRecord) { QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord); return inviteRecordMapper.selectCount(wrapper); }