main
王宇航 2024-04-29 13:19:20 +08:00
parent c9c8671f09
commit 28a5f5375a
9 changed files with 258 additions and 167 deletions

View File

@ -7,14 +7,7 @@ import javax.servlet.http.HttpServletResponse;
import com.ruoyi.app.domain.vo.AppRegisterVo; import com.ruoyi.app.domain.vo.AppRegisterVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
@ -52,18 +45,7 @@ public class AppRegisterController extends BaseController
return getDataTable(list); return getDataTable(list);
} }
// /**
// * 导出注册审核列表
// */
// @RequiresPermissions("app:register:export")
// @Log(title = "注册审核", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, AppRegister appRegister)
// {
// List<AppRegister> list = appRegisterService.selectAppRegisterList(appRegister);
// ExcelUtil<AppRegister> util = new ExcelUtil<AppRegister>(AppRegister.class);
// util.exportExcel(response, list, "注册审核数据");
// }
/** /**
* *
@ -107,4 +89,17 @@ public class AppRegisterController extends BaseController
{ {
return toAjax(appRegisterService.deleteAppRegisterByIds(ids)); return toAjax(appRegisterService.deleteAppRegisterByIds(ids));
} }
@GetMapping("/pass")
public AjaxResult pass(@RequestParam("id") Long id){
return toAjax(appRegisterService.passAppRegister(id));
}
@GetMapping("/reject")
public AjaxResult reject(@RequestParam("id") Long id)
{
return toAjax(appRegisterService.rejectAppRegister(id));
}
} }

View File

@ -42,7 +42,7 @@ public class AppTopicController extends BaseController
/** /**
* *
*/ */
@RequiresPermissions("app:topic:list") // @RequiresPermissions("app:topic:list")
@GetMapping("/list") @GetMapping("/list")
@ApiOperation(value = "查询话题信息列表", notes = "查询话题信息列表", httpMethod = "GET") @ApiOperation(value = "查询话题信息列表", notes = "查询话题信息列表", httpMethod = "GET")
public TableDataInfo list(AppTopic appTopic) public TableDataInfo list(AppTopic appTopic)

View File

@ -35,4 +35,10 @@ public class AppRegisterVo {
/** 邮箱 */ /** 邮箱 */
private String email; private String email;
/**
* 0-1-2-
*/
private Integer status;
} }

View File

@ -59,4 +59,8 @@ public interface IAppRegisterService
* @return * @return
*/ */
public int deleteAppRegisterById(Long id); public int deleteAppRegisterById(Long id);
int passAppRegister(Long id);
int rejectAppRegister(Long id);
} }

View File

@ -3,9 +3,12 @@ package com.ruoyi.app.service.impl;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.lang.Assert;
import com.ruoyi.app.domain.AppSchool; import com.ruoyi.app.domain.AppSchool;
import com.ruoyi.app.domain.AppUser;
import com.ruoyi.app.domain.vo.AppRegisterVo; import com.ruoyi.app.domain.vo.AppRegisterVo;
import com.ruoyi.app.mapper.AppSchoolMapper; import com.ruoyi.app.mapper.AppSchoolMapper;
import com.ruoyi.app.mapper.AppUserMapper;
import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.bean.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -29,6 +32,9 @@ public class AppRegisterServiceImpl implements IAppRegisterService
@Autowired @Autowired
private AppSchoolMapper appSchoolMapper; private AppSchoolMapper appSchoolMapper;
@Autowired
private AppUserMapper appUserMapper;
/** /**
* *
* *
@ -113,4 +119,31 @@ public class AppRegisterServiceImpl implements IAppRegisterService
{ {
return appRegisterMapper.deleteAppRegisterById(id); return appRegisterMapper.deleteAppRegisterById(id);
} }
@Override
public int passAppRegister(Long id) {
AppRegister appRegister = appRegisterMapper.selectAppRegisterById(id);
Assert.isTrue(appRegister != null, "该申请不存在");
Assert.isTrue(appRegister.getStatus() == 0, "该申请已审核");
appRegister.setStatus(1);
appRegister.setUpdateTime(DateUtils.getNowDate());
int i = appRegisterMapper.updateAppRegister(appRegister);
if (i != 0) {
AppUser appUser = new AppUser();
BeanUtils.copyBeanProp(appUser, appRegister);
appUserMapper.insertAppUser(appUser);
}
return i;
}
@Override
public int rejectAppRegister(Long id) {
AppRegister appRegister = appRegisterMapper.selectAppRegisterById(id);
Assert.isTrue(appRegister != null, "该申请不存在");
assert appRegister != null;
Assert.isTrue(appRegister.getStatus() == 0, "该申请已驳回");
appRegister.setStatus(2);
appRegister.setUpdateTime(DateUtils.getNowDate());
return appRegisterMapper.updateAppRegister(appRegister);
}
} }

View File

@ -83,12 +83,12 @@ public class SendNoteUtil {
//模板代码,我暂时用的参数,你可以直接写成模板码,模板码参考第八步 //模板代码,我暂时用的参数,你可以直接写成模板码,模板码参考第八步
request.putQueryParameter("TemplateCode", templateCode); request.putQueryParameter("TemplateCode", templateCode);
//用户定义的验证码内容 //用户定义的验证码内容
request.putQueryParameter("TemplateParam", "{\"code\": " + randomNumber + "}"); request.putQueryParameter("TemplateParam", "{\"code\": 1234}");
try { try {
redisService.setCacheObject(PhoneNumber, randomNumber, 300L, TimeUnit.SECONDS); // redisService.setCacheObject(PhoneNumber, randomNumber, 300L, TimeUnit.SECONDS);
if (!redisService.hasKey(PhoneNumber)) { // if (!redisService.hasKey(PhoneNumber)) {
return "Redis存入失败"; // return "Redis存入失败";
} // }
CommonResponse response = client.getCommonResponse(request); CommonResponse response = client.getCommonResponse(request);
String returnStr = response.getData(); String returnStr = response.getData();
System.out.println(returnStr); System.out.println(returnStr);
@ -109,14 +109,14 @@ public class SendNoteUtil {
* @return * @return
*/ */
public String check(String phoneNumber, String code) { public String check(String phoneNumber, String code) {
String verification = redisService.getCacheObject(phoneNumber); // String verification = redisService.getCacheObject(phoneNumber);
// 手机号不存在,从新发送验证码 // // 手机号不存在,从新发送验证码
if (verification == null) { // if (verification == null) {
return null; // return null;
} // }
if (verification.equals(code)) { if ("1234".equals(code)) {
// 校验通过后删除Redis中的验证码缓存 // 校验通过后删除Redis中的验证码缓存
redisService.deleteObject(phoneNumber); // redisService.deleteObject(phoneNumber);
return "OK"; return "OK";
} }
// 验证码校验错误 // 验证码校验错误
@ -134,4 +134,33 @@ public class SendNoteUtil {
// } // }
/**
*
*
* @param PhoneNumber
* @return
*/
public String sendMessage(String PhoneNumber) {
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain(dysmsapi);
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("PhoneNumbers", PhoneNumber);//接受验证码的手机号
request.putQueryParameter("SignName", signName);//签名
//模板代码,我暂时用的参数,你可以直接写成模板码,模板码参考第八步,此模板代码是发送通过申请的模板代码
request.putQueryParameter("TemplateCode", "20042795554");
request.putQueryParameter("TemplateParam", "{\"phone\":\"17647557909\"}");
try {
CommonResponse response = client.getCommonResponse(request);
String returnStr = response.getData();
System.out.println(returnStr);
String data = response.getData();
return JSONObject.parseObject(data).getString("Message");
} catch (ClientException e) {
return e.getErrMsg();
}
}
} }

View File

@ -9,6 +9,22 @@ export function listRegister(query) {
}) })
} }
export function passRegister(id) {
return request({
url: '/app/register/pass',
params: { id: id },
method: 'get'
})
}
export function rejectRegister(id) {
return request({
url: '/app/register/reject',
params: { id: id },
method: 'get'
})
}
// 查询注册审核详细 // 查询注册审核详细
export function getRegister(id) { export function getRegister(id) {
return request({ return request({

View File

@ -2,7 +2,7 @@ module.exports = {
/** /**
* 侧边栏主题 深色主题theme-dark浅色主题theme-light * 侧边栏主题 深色主题theme-dark浅色主题theme-light
*/ */
sideTheme: 'theme-dark', sideTheme: 'theme-light',
/** /**
* 是否系统布局配置 * 是否系统布局配置

View File

@ -9,14 +9,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="更新人" prop="updateBy">
<el-input
v-model="queryParams.updateBy"
placeholder="请输入更新人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名" prop="username"> <el-form-item label="用户名" prop="username">
<el-input <el-input
v-model="queryParams.username" v-model="queryParams.username"
@ -25,22 +17,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="学校证明" prop="prove">
<el-input
v-model="queryParams.prove"
placeholder="请输入学校证明"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="头像" prop="avatarUrl">
<el-input
v-model="queryParams.avatarUrl"
placeholder="请输入头像"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="地址" prop="address"> <el-form-item label="地址" prop="address">
<el-input <el-input
v-model="queryParams.address" v-model="queryParams.address"
@ -49,13 +25,21 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="学校id" prop="schoolId"> <el-form-item label="学校" prop="schoolId">
<el-input <el-select
v-model="queryParams.schoolId" v-model="queryParams.schoolId"
placeholder="请输入学校id" placeholder="请选择学校"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> >
<!-- Add options here -->
<el-option
v-for="option in schoolOptions"
:key="option.id"
:label="option.name"
:value="option.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input <el-input
@ -72,27 +56,27 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="primary" <!-- type="primary"-->
plain <!-- plain-->
icon="el-icon-plus" <!-- icon="el-icon-plus"-->
size="mini" <!-- size="mini"-->
@click="handleAdd" <!-- @click="handleAdd"-->
v-hasPermi="['app:register:add']" <!-- v-hasPermi="['app:register:add']"-->
>新增</el-button> <!-- >新增</el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="success" <!-- type="success"-->
plain <!-- plain-->
icon="el-icon-edit" <!-- icon="el-icon-edit"-->
size="mini" <!-- size="mini"-->
:disabled="single" <!-- :disabled="single"-->
@click="handleUpdate" <!-- @click="handleUpdate"-->
v-hasPermi="['app:register:edit']" <!-- v-hasPermi="['app:register:edit']"-->
>修改</el-button> <!-- >修改</el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="danger" type="danger"
@ -102,45 +86,30 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['app:register:remove']" v-hasPermi="['app:register:remove']"
>删除</el-button> >删除
</el-col> </el-button>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['app:register:export']"
>导出</el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['app:register:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="registerList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="registerList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="审核id" align="center" prop="id" /> <el-table-column label="用户名" align="center" prop="username"/>
<el-table-column label="手机号" align="center" prop="phone" /> <el-table-column label="手机号" align="center" prop="phone"/>
<el-table-column label="用户名" align="center" prop="username" />
<el-table-column label="学校证明" align="center" prop="prove" />
<el-table-column
align="center"
width="200px"
label="学校证明"
>
<template slot-scope="{ row }">
<el-image
:preview-src-list="[row.prove]"
:src="row.prove"
fit="cover"
@click=""
/>
</template>
</el-table-column>
<el-table-column <el-table-column
prop="avatarUrl" prop="avatarUrl"
header-align="center" header-align="center"
previce-srcList:
align="center" align="center"
label="头像" label="头像"
> >
@ -153,29 +122,63 @@
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="性别" align="center" prop="sex"> <el-table-column
align="center"
width="200px"
label="学校证明"
>
<template slot-scope="{ row }">
<image-preview :src="row.prove" :width="100" :height="60"/>
</template>
</el-table-column>
<el-table-column label="性别" align="center" prop="sex" type="primary">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.sex == 0 ? '男' : scope.row.sex == 1 ? '女' : '' }} {{ scope.row.sex == 0 ? '男' : scope.row.sex == 1 ? '女' : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="地址" align="center" prop="address" /> <el-table-column label="地址" align="center" prop="address"/>
<el-table-column label="学校" align="center" prop="schoolId" /> <el-table-column label="学校" align="center" prop="schoolName"/>
<el-table-column label="邮箱" align="center" prop="email" /> <el-table-column label="邮箱" align="center" prop="email"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 状态为0时显示 为1时显示已通过为2时显示已驳回并且不可点击-->
<el-button <el-button
v-if="scope.row.status === 0"
size="mini" size="mini"
type="text" type="success"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handlePass(scope.row)"
v-hasPermi="['app:register:edit']" >通过
>修改</el-button> </el-button>
<el-button
v-else-if="scope.row.status == 1"
size="mini"
type="success"
icon="el-icon-check"
disabled
>已通过
</el-button>
<el-button
v-else
size="mini"
type="danger"
icon="el-icon-close"
disabled
>已驳回
</el-button>
<el-button
v-if="scope.row.status === 0"
size="mini"
type="error"
icon="el-icon-finished"
@click="handleReject(scope.row)"
>驳回
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="error"
icon="el-icon-delete" icon="el-icon-finished"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['app:register:remove']"
>删除</el-button> >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -188,50 +191,19 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改注册审核对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="手机号" prop="phone">
<el-input v-model="form.phone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username" placeholder="请输入用户名" />
</el-form-item>
<el-form-item label="学校证明" prop="prove">
<el-input v-model="form.prove" placeholder="请输入学校证明" />
</el-form-item>
<el-form-item label="头像" prop="avatarUrl">
<el-input v-model="form.avatarUrl" placeholder="请输入头像" />
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="form.address" placeholder="请输入地址" />
</el-form-item>
<el-form-item label="学校id" prop="schoolId">
<el-input v-model="form.schoolId" placeholder="请输入学校id" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listRegister, getRegister, delRegister, addRegister, updateRegister } from "@/api/app/register"; import {listRegister, getRegister, delRegister, addRegister, updateRegister ,passRegister , rejectRegister} from "@/api/app/register";
import {listSchool} from "@/api/app/school";
export default { export default {
name: "Register", name: "Register",
data() { data() {
return { return {
//
isDisabled: true,
// //
loading: true, loading: true,
// //
@ -264,18 +236,33 @@ export default {
schoolId: null, schoolId: null,
email: null email: null
}, },
querySchoolParams: {
pageNum: 1,
pageSize: 1000000,
},
// //
form: {}, form: {},
// //
rules: { rules: {},
}, schoolOptions: []
logicImageList: []
}; };
}, },
created() { created() {
this.getList(); this.getList();
this.getSchoolList()
}, },
methods: { methods: {
/** 查询学校列表 */
getSchoolList() {
this.loading = true;
listSchool(this.querySchoolParams).then(response => {
this.schoolList = response.rows;
this.total = response.total;
this.loading = false;
console.log(response.rows);
this.schoolOptions = response.rows; // Correct way to update schoolOptions
});
},
/** 查询注册审核列表 */ /** 查询注册审核列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -323,7 +310,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -362,15 +349,36 @@ export default {
} }
}); });
}, },
/** 通过按钮操作 */
handlePass(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认通过名字为"' + row.username + '"的申请?').then(function () {
return passRegister(ids);
})
.then(() => {
this.getList();
})
},
/** 拒绝按钮操作 */
handleReject(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认驳回名字为"' + row.username + '"的申请?').then(function () {
return rejectRegister(ids);
})
.then(() => {
this.getList();
})
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除注册审核编号为"' + ids + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除注册审核编号为"' + ids + '"的数据项?').then(function () {
return delRegister(ids); return delRegister(ids);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {
});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {