| src/main/java/cc/mrbird/febs/ai/controller/companyApply/AiCompanyApplyController.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/cc/mrbird/febs/ai/controller/companyApply/ViewController.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/cc/mrbird/febs/ai/entity/AiCompanyMemberApply.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/cc/mrbird/febs/ai/service/AiCompanyMemberApplyService.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyMemberApplyServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/resources/templates/febs/views/modules/ai/aiApply/list.html | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/ai/controller/companyApply/AiCompanyApplyController.java
New file @@ -0,0 +1,56 @@ package cc.mrbird.febs.ai.controller.companyApply; import cc.mrbird.febs.ai.entity.AiCompanyMemberApply; import cc.mrbird.febs.ai.service.AiCompanyMemberApplyService; import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Map; /** * @author Administrator */ @Slf4j @Validated @RestController @RequiredArgsConstructor @RequestMapping(value = "/admin/aiApply") public class AiCompanyApplyController extends BaseController { private final AiCompanyMemberApplyService service; @GetMapping("list") public FebsResponse list(AiCompanyMemberApply dto, QueryRequest request) { Map<String, Object> data = getDataTable(service.listInPage(dto, request)); return new FebsResponse().success().data(data); } @PostMapping("agree") @ControllerEndpoint(operation = "同意", exceptionMessage = "操作失败") public FebsResponse agree(@RequestBody @Valid AiCompanyMemberApply dto) { return service.agree(dto); } @PostMapping("disagree") @ControllerEndpoint(operation = "拒绝", exceptionMessage = "操作失败") public FebsResponse disagree(@RequestBody @Valid AiCompanyMemberApply dto) { return service.disagree(dto); } @PostMapping("unbind") @ControllerEndpoint(operation = "解绑", exceptionMessage = "操作失败") public FebsResponse unbind(@RequestBody @Valid AiCompanyMemberApply dto) { return service.unbind(dto); } } src/main/java/cc/mrbird/febs/ai/controller/companyApply/ViewController.java
New file @@ -0,0 +1,29 @@ package cc.mrbird.febs.ai.controller.companyApply; import cc.mrbird.febs.ai.service.AiCompanyMemberApplyService; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.common.utils.FebsUtil; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; /** * @author Administrator */ @Controller("AiCompanyApply") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/ai/aiApply") @RequiredArgsConstructor public class ViewController { private final AiCompanyMemberApplyService service; @GetMapping("list") @RequiresPermissions("applyList:view") public String list() { return FebsUtil.view("modules/ai/aiApply/list"); } } src/main/java/cc/mrbird/febs/ai/entity/AiCompanyMemberApply.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.ai.entity; import cc.mrbird.febs.common.entity.AiBaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -18,4 +19,10 @@ private String companyCode; private String companyName; private Integer state; @TableField(exist = false) private String name; @TableField(exist = false) private String realName; } src/main/java/cc/mrbird/febs/ai/service/AiCompanyMemberApplyService.java
@@ -1,7 +1,17 @@ package cc.mrbird.febs.ai.service; import cc.mrbird.febs.ai.entity.AiCompanyMemberApply; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface AiCompanyMemberApplyService extends IService<AiCompanyMemberApply> { IPage<AiCompanyMemberApply> listInPage(AiCompanyMemberApply dto, QueryRequest request); FebsResponse agree(AiCompanyMemberApply dto); FebsResponse disagree(AiCompanyMemberApply dto); FebsResponse unbind(AiCompanyMemberApply dto); } src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyMemberApplyServiceImpl.java
@@ -1,15 +1,94 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiCompany; import cc.mrbird.febs.ai.entity.AiCompanyMemberApply; import cc.mrbird.febs.ai.entity.AiMember; import cc.mrbird.febs.ai.mapper.AiCompanyMemberApplyMapper; import cc.mrbird.febs.ai.service.AiCompanyMemberApplyService; import cc.mrbird.febs.ai.service.AiMemberService; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class AiCompanyMemberApplyServiceImpl extends ServiceImpl<AiCompanyMemberApplyMapper, AiCompanyMemberApply> implements AiCompanyMemberApplyService { private final MallMemberMapper mallMemberMapper; private final AiMemberService aiMemberService; @Override public IPage<AiCompanyMemberApply> listInPage(AiCompanyMemberApply dto, QueryRequest request) { Page<AiCompanyMemberApply> page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper<AiCompanyMemberApply> query = Wrappers.lambdaQuery(AiCompanyMemberApply.class); query.orderByDesc(AiCompanyMemberApply::getCreatedTime); Page<AiCompanyMemberApply> pages = this.baseMapper.selectPage(page, query); List<AiCompanyMemberApply> records = pages.getRecords(); if(CollUtil.isNotEmpty(records)){ //获取records的全部memberId List<String> memberIds = records.stream().map(AiCompanyMemberApply::getMemberId).collect(Collectors.toList()); List<MallMember> mallMembers = mallMemberMapper.selectList( Wrappers.lambdaQuery(MallMember.class) .select(MallMember::getMemberUuid, MallMember::getName, MallMember::getRealName) .in(MallMember::getMemberUuid, memberIds) ); if (CollUtil.isNotEmpty(mallMembers)){ records.forEach(record -> { MallMember mallMember = mallMembers.stream().filter(m -> m.getMemberUuid().equals(record.getMemberId())).findFirst().orElse(null); if (mallMember != null){ record.setName(mallMember.getName()); record.setRealName(mallMember.getRealName()); } }); } } return pages; } @Override public FebsResponse agree(AiCompanyMemberApply dto) { return null; } @Override public FebsResponse disagree(AiCompanyMemberApply dto) { String id = dto.getId(); AiCompanyMemberApply aiCompanyMemberApply = this.getById(id); if (ObjectUtil.isEmpty(aiCompanyMemberApply)){ throw new RuntimeException("申请不存在"); } if (0 != aiCompanyMemberApply.getState()){ throw new RuntimeException("申请已处理"); } this.update(null, Wrappers.lambdaUpdate(AiCompanyMemberApply.class) .set(AiCompanyMemberApply::getState, 3) .eq(AiCompanyMemberApply::getId, id) ); return new FebsResponse().success(); } @Override public FebsResponse unbind(AiCompanyMemberApply dto) { return null; } } src/main/resources/templates/febs/views/modules/ai/aiApply/list.html
New file @@ -0,0 +1,196 @@ <div class="layui-fluid layui-anim febs-anim" id="febs-aiApply" lay-title="公司编码申请"> <div class="layui-row febs-container"> <div class="layui-col-md12"> <div class="layui-card"> <div class="layui-card-body febs-table-full"> <form class="layui-form layui-table-form" lay-filter="aiApply-table-form"> <div class="layui-row"> <div class="layui-col-md10"> <div class="layui-form-item"> </div> </div> <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> <i class="layui-icon"></i> </div> <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> <i class="layui-icon"></i> </div> </div> </div> </form> <table lay-filter="aiApplyTable" lay-data="{id: 'aiApplyTable'}"></table> <style type="text/css"> .layui-table-cell{ text-align:center; height: auto; white-space: nowrap; /*文本不会换行,在同一行显示*/ overflow: hidden; /*超出隐藏*/ text-overflow: ellipsis; /*省略号显示*/ } .layui-table img{ max-width:100px } ::-webkit-scrollbar { height: 20px !important; background-color: #f4f4f4; } </style> </div> </div> </div> </div> </div> <!--<script type="text/html" id="aiApplyToolbar">--> <!-- <div class="layui-btn-container">--> <!-- <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="companyList:add" lay-event="aiApplyAdd">新增</button>--> <!-- </div>--> <!--</script>--> <script type="text/html" id="aiApplyOption"> <button class="layui-btn layui-btn-sm layui-btn-success" type="button" shiro:hasPermission="applyList:view" lay-event="aiApplyInfoAgreeEvent">同意</button> <button class="layui-btn layui-btn-sm layui-btn-danger" type="button" shiro:hasPermission="applyList:view" lay-event="aiApplyInfoDisagreeEvent">拒绝</button> <button class="layui-btn layui-btn-sm layui-btn-warm" type="button" shiro:hasPermission="applyList:view" lay-event="aiApplyInfoUnbindEvent">解绑</button> </script> <style> .layui-form-onswitch { background-color: #5FB878 !important; } </style> <!-- 表格操作栏 end --> <script data-th-inline="none" type="text/javascript"> // 引入组件并初始化 layui.use([ 'jquery', 'form', 'table', 'febs'], function () { var $ = layui.jquery, febs = layui.febs, form = layui.form, table = layui.table, $view = $('#febs-aiApply'), $query = $view.find('#query'), $reset = $view.find('#reset'), $searchForm = $view.find('form'), sortObject = {field: 'orderNum', type: null}, tableIns; form.render(); // 表格初始化 initaiApplyTable(); // 初始化表格操作栏各个按钮功能 table.on('tool(aiApplyTable)', function (obj) { console.log("触发事件:", obj.event); // 调试信息 var data = obj.data, layEvent = obj.event; if (layEvent === 'aiApplyInfoEvent') { if (data.state == 1){ febs.alert.warn('请先禁用这行数据'); return; } febs.modal.open('编辑','modules/ai/aiApply/info/' + data.id, { btn: ['提交', '取消'], area: ['100%', '100%'], yes: function (index, layero) { $('#febs-aiApply-Info').find('#submit').trigger('click'); }, btn2: function () { layer.closeAll(); } }); } else if (layEvent === 'aiApplyInfoAgreeEvent') { // 同意操作 febs.confirm('确定要同意该申请吗?', function () { handleApplyAction(data.id, 'agree'); }); } else if (layEvent === 'aiApplyInfoDisagreeEvent') { // 拒绝操作 febs.confirm('确定要拒绝该申请吗?', function () { handleApplyAction(data.id, 'disagree'); }); } else if (layEvent === 'aiApplyInfoUnbindEvent') { // 解绑操作 febs.confirm('确定要解除绑定吗?此操作不可撤销!', function () { handleApplyAction(data.id, 'unbind'); }); } }); // 处理申请操作的通用方法 function handleApplyAction(id, action) { var actionName = { 'agree': '同意', 'disagree': '拒绝', 'unbind': '解绑' }[action]; var url = ctx + 'admin/aiApply/' + action; $.ajax({ url: url, type: 'post', data: JSON.stringify({id: id}), dataType: 'json', headers: {'Content-Type': 'application/json;charset=utf-8'}, beforeSend: function() { febs.loading.show(); }, success: function(res) { if (res.code === 200) { febs.alert.success(actionName + '成功'); // 刷新表格数据 tableIns.reload({where: getQueryParams(), page: {curr: 1}}); } else { febs.alert.error(res.msg || actionName + '失败'); } }, error: function() { febs.alert.error('服务器错误,请稍后重试'); }, complete: function() { febs.loading.hide(); } }); } function initaiApplyTable() { tableIns = febs.table.init({ elem: $view.find('table'), id: 'aiApplyTable', url: ctx + 'admin/aiApply/list', toolbar:"#aiApplyToolbar", defaultToolbar:[], cols: [[ {type: 'checkbox'}, {type: 'numbers', title: '', width: 80}, {title: '操作', toolbar: '#aiApplyOption', minWidth: 200, align: 'center'}, {field: 'id', title: 'ID', minWidth: 100,align:'center'}, {field: 'name', title: '昵称', minWidth: 100,align:'center'}, {field: 'realName', title: '姓名', minWidth: 100,align:'center'}, {field: 'companyCode', title: '公司', minWidth: 100,align:'center'}, {field: 'createdTime', title: '时间', minWidth: 100,align:'center'}, ]] }); } // 查询按钮 $query.on('click', function () { var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); tableIns.reload({where: params, page: {curr: 1}}); }); // 刷新按钮 $reset.on('click', function () { $searchForm[0].reset(); sortObject.type = 'null'; tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); }); // 获取查询参数 function getQueryParams() { return { }; } }) </script>