提交 d78ef8f7 authored 作者: 吴德鹏's avatar 吴德鹏

评论

上级 3a7d995b
package com.platform.controller;
import com.platform.entity.VirtualUserEntity;
import com.platform.service.VirtualUserService;
import com.platform.utils.PageUtils;
import com.platform.utils.Query;
import com.platform.utils.R;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
/**
* Controller
*
* @author lipengjun
* @date 2021-01-27 10:21:45
*/
@Controller
@RequestMapping("virtualuser")
public class VirtualUserController {
@Autowired
private VirtualUserService virtualUserService;
/**
* 查看列表
*/
@RequestMapping("/list")
@RequiresPermissions("virtualuser:list")
@ResponseBody
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<VirtualUserEntity> virtualUserList = virtualUserService.queryList(query);
int total = virtualUserService.queryTotal(query);
PageUtils pageUtil = new PageUtils(virtualUserList, total, query.getLimit(), query.getPage());
return R.ok().put("page", pageUtil);
}
/**
* 查看信息
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("virtualuser:info")
@ResponseBody
public R info(@PathVariable("id") String id) {
VirtualUserEntity virtualUser = virtualUserService.queryObject(id);
return R.ok().put("virtualUser", virtualUser);
}
/**
* 保存
*/
@RequestMapping("/save")
@RequiresPermissions("virtualuser:save")
@ResponseBody
public R save(@RequestBody VirtualUserEntity virtualUser) {
virtualUserService.save(virtualUser);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@RequiresPermissions("virtualuser:update")
@ResponseBody
public R update(@RequestBody VirtualUserEntity virtualUser) {
virtualUserService.update(virtualUser);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
@RequiresPermissions("virtualuser:delete")
@ResponseBody
public R delete(@RequestBody String[] ids) {
virtualUserService.deleteBatch(ids);
return R.ok();
}
/**
* 查看所有列表
*/
@RequestMapping("/queryAll")
@ResponseBody
public R queryAll(@RequestParam Map<String, Object> params) {
List<VirtualUserEntity> list = virtualUserService.queryList(params);
return R.ok().put("list", list);
}
}
package com.platform.dao;
import com.platform.entity.VirtualUserEntity;
/**
* Dao
*
* @author lipengjun
* @date 2021-01-27 10:21:45
*/
public interface VirtualUserDao extends BaseDao<VirtualUserEntity> {
}
......@@ -2,6 +2,7 @@ package com.platform.entity;
import cn.hutool.core.codec.Base64;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import java.io.*;
......@@ -60,25 +61,25 @@ public class BASE64DecodedMultipartFile implements MultipartFile {
new FileOutputStream(dest).write(imgContent);
}
// public static MultipartFile base64ToMultipart(String base64) {
// try {
// String[] baseStrs = base64.split(",");
//
// BASE64Decoder decoder = new BASE64Decoder();
// byte[] b = new byte[0];
// b = decoder.decodeBuffer(baseStrs[1]);
//
// for (int i = 0; i < b.length; ++i) {
// if (b[i] < 0) {
// b[i] += 256;
// }
// }
// return new BASE64DecodedMultipartFile(b, baseStrs[0]);
// } catch (IOException e) {
// e.printStackTrace();
// return null;
// }
// }
public static MultipartFile base64ToMultipart(String base64) {
try {
String[] baseStrs = base64.split(",");
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = new byte[0];
b = decoder.decodeBuffer(baseStrs[1]);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
return new BASE64DecodedMultipartFile(b, baseStrs[0]);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static File base64ToFile(String base64) {
if(base64==null||"".equals(base64)) {
......
......@@ -78,7 +78,7 @@ public class TbCfItemCommentEntity implements Serializable {
private String orderNo;
private String itemName;
private boolean real;
private Integer real;
private String itemImg;
public String getItemImg() {
......@@ -89,11 +89,11 @@ public class TbCfItemCommentEntity implements Serializable {
this.itemImg = itemImg;
}
public boolean isReal() {
public Integer getReal() {
return real;
}
public void setReal(boolean real) {
public void setReal(Integer real) {
this.real = real;
}
......
package com.platform.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 实体
* 表名 virtual_user
*
* @author lipengjun
* @date 2021-01-27 10:21:45
*/
public class VirtualUserEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 虚拟用户ID
*/
private String id;
/**
* 虚拟账号
*/
private String account;
/**
* 昵称
*/
private String nick;
/**
* 头像
*/
private String avatar;
/**
* 状态 0:已删除 1:正常
*/
private Integer status;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 设置:虚拟用户ID
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取:虚拟用户ID
*/
public String getId() {
return id;
}
/**
* 设置:虚拟账号
*/
public void setAccount(String account) {
this.account = account;
}
/**
* 获取:虚拟账号
*/
public String getAccount() {
return account;
}
/**
* 设置:昵称
*/
public void setNick(String nick) {
this.nick = nick;
}
/**
* 获取:昵称
*/
public String getNick() {
return nick;
}
/**
* 设置:头像
*/
public void setAvatar(String avatar) {
this.avatar = avatar;
}
/**
* 获取:头像
*/
public String getAvatar() {
return avatar;
}
/**
* 设置:状态 0:已删除 1:正常
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
* 获取:状态 0:已删除 1:正常
*/
public Integer getStatus() {
return status;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}
package com.platform.service;
import com.platform.entity.VirtualUserEntity;
import java.util.List;
import java.util.Map;
/**
* Service接口
*
* @author lipengjun
* @date 2021-01-27 10:21:45
*/
public interface VirtualUserService {
/**
* 根据主键查询实体
*
* @param id 主键
* @return 实体
*/
VirtualUserEntity queryObject(String id);
/**
* 分页查询
*
* @param map 参数
* @return list
*/
List<VirtualUserEntity> queryList(Map<String, Object> map);
/**
* 分页统计总数
*
* @param map 参数
* @return 总数
*/
int queryTotal(Map<String, Object> map);
/**
* 保存实体
*
* @param virtualUser 实体
* @return 保存条数
*/
int save(VirtualUserEntity virtualUser);
/**
* 根据主键更新实体
*
* @param virtualUser 实体
* @return 更新条数
*/
int update(VirtualUserEntity virtualUser);
/**
* 根据主键删除
*
* @param id
* @return 删除条数
*/
int delete(String id);
/**
* 根据主键批量删除
*
* @param ids
* @return 删除条数
*/
int deleteBatch(String[] ids);
}
package com.platform.service.impl;
import com.platform.dao.TbCfItemCommentDao;
import com.platform.dao.TbCfItemSkusDao;
import com.platform.dao.TbCfStationItemDao;
import com.platform.dao.TbCfUserInfoDao;
import com.platform.dao.*;
import com.platform.entity.TbCfItemCommentEntity;
import com.platform.entity.TbCfItemSkusEntity;
import com.platform.entity.TbCfUserInfoEntity;
import com.platform.entity.VirtualUserEntity;
import com.platform.service.TbCfItemCommentService;
import com.platform.utils.IdUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -37,6 +37,10 @@ public class TbCfItemCommentServiceImpl implements TbCfItemCommentService {
@Autowired
private TbCfItemSkusDao tbCfItemSkusDao;
@Autowired
private VirtualUserDao virtualUserDao;
@Override
public TbCfItemCommentEntity queryObject(String id) {
return tbCfItemCommentDao.queryObject(id);
......@@ -44,7 +48,25 @@ public class TbCfItemCommentServiceImpl implements TbCfItemCommentService {
@Override
public List<TbCfItemCommentEntity> queryList(Map<String, Object> map) {
return tbCfItemCommentDao.queryList(map);
List<TbCfItemCommentEntity> comments = new ArrayList<>();
List<TbCfItemCommentEntity> list = tbCfItemCommentDao.queryList(map);
list.forEach(comment -> {
String real = comment.getReal().toString();
String userId = comment.getUserId();
//真实评论
if ("1".equals(real)) {
TbCfUserInfoEntity user = tbCfUserInfoDao.queryObject(userId);
if (user != null)
comment.setUserName(user.getNick());
} else {
//虚拟评论
VirtualUserEntity virtualUser = virtualUserDao.queryObject(userId);
if (virtualUser != null)
comment.setUserName(virtualUser.getNick());
}
comments.add(comment);
});
return comments;
}
@Override
......@@ -61,7 +83,7 @@ public class TbCfItemCommentServiceImpl implements TbCfItemCommentService {
// }
// tbCfItemComment.setUserId(userId);
tbCfItemComment.setId(IdUtil.createIdbyUUID());
tbCfItemComment.setReal(false);
tbCfItemComment.setReal(0);
tbCfItemComment.setCreateTime(new Date());
tbCfItemComment.setUpdateTime(new Date());
tbCfItemComment.setDelFlag(1);
......
package com.platform.service.impl;
import com.platform.dao.VirtualUserDao;
import com.platform.entity.VirtualUserEntity;
import com.platform.service.VirtualUserService;
import com.platform.utils.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* Service实现类
*
* @author lipengjun
* @date 2021-01-27 10:21:45
*/
@Service("virtualUserService")
public class VirtualUserServiceImpl implements VirtualUserService {
@Autowired
private VirtualUserDao virtualUserDao;
@Override
public VirtualUserEntity queryObject(String id) {
return virtualUserDao.queryObject(id);
}
@Override
public List<VirtualUserEntity> queryList(Map<String, Object> map) {
return virtualUserDao.queryList(map);
}
@Override
public int queryTotal(Map<String, Object> map) {
return virtualUserDao.queryTotal(map);
}
@Override
public int save(VirtualUserEntity virtualUser) {
virtualUser.setId(IdUtil.createIdbyUUID());
virtualUser.setCreateTime(new Date());
virtualUser.setUpdateTime(new Date());
virtualUser.setStatus(1);
return virtualUserDao.save(virtualUser);
}
@Override
public int update(VirtualUserEntity virtualUser) {
virtualUser.setUpdateTime(new Date());
return virtualUserDao.update(virtualUser);
}
@Override
public int delete(String id) {
return virtualUserDao.delete(id);
}
@Override
public int deleteBatch(String[] ids) {
return virtualUserDao.deleteBatch(ids);
}
}
......@@ -64,13 +64,11 @@
c.del_flag,
c.create_time,
c.update_time,
u.nick userName,
o.order_no,
i.item_name,
i.item_img
FROM
tb_cf_item_comment c
LEFT JOIN tb_cf_user_info u ON c.user_id = u.user_id
left join tb_cf_order o on c.order_id=o.order_id
left join tb_cf_station_item i on c.item_id=i.item_id
WHERE
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.platform.dao.VirtualUserDao">
<resultMap type="com.platform.entity.VirtualUserEntity" id="virtualUserMap">
<result property="id" column="id"/>
<result property="account" column="account"/>
<result property="nick" column="nick"/>
<result property="avatar" column="avatar"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="queryObject" resultType="com.platform.entity.VirtualUserEntity">
select
`id`,
`account`,
`nick`,
`avatar`,
`status`,
`create_time`,
`update_time`
from virtual_user
where id = #{id}
</select>
<select id="queryList" resultType="com.platform.entity.VirtualUserEntity">
select
`id`,
`account`,
`nick`,
`avatar`,
`status`,
`create_time`,
`update_time`
from virtual_user
WHERE 1=1 and status=1
<if test="name != null and name.trim() != ''">
AND nick LIKE concat('%',#{name},'%') or account LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by id desc
</otherwise>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
select count(*) from virtual_user
WHERE 1=1 and status=1
<if test="name != null and name.trim() != ''">
AND nick LIKE concat('%',#{name},'%') or account LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.platform.entity.VirtualUserEntity">
insert into virtual_user(
`id`,
`account`,
`nick`,
`avatar`,
`status`,
`create_time`,
`update_time`)
values(
#{id},
#{account},
#{nick},
#{avatar},
#{status},
#{createTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.platform.entity.VirtualUserEntity">
update virtual_user
<set>
<if test="account != null">`account` = #{account},</if>
<if test="nick != null">`nick` = #{nick},</if>
<if test="avatar != null">`avatar` = #{avatar},</if>
<if test="status != null">`status` = #{status},</if>
<if test="createTime != null">`create_time` = #{createTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where id = #{id}
</update>
<delete id="delete">
delete from virtual_user where id = #{value}
</delete>
<delete id="deleteBatch">
delete from virtual_user where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
<!DOCTYPE html>
<html>
<head>
<title></title>
#parse("sys/header.html")
</head>
<body>
<div id="rrapp" v-cloak style="height: calc(100% - 15px);">
<div v-show="showList" style="height: 100%;">
<Row :gutter="16">
<div class="search-group">
<i-col span="4">
<i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
</i-col>
<i-button @click="query">查询</i-button>
<i-button @click="reloadSearch">重置</i-button>
</div>
<div class="buttons-group">
#if($shiro.hasPermission("virtualuser:save"))
<i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
#end
#if($shiro.hasPermission("virtualuser:update"))
<i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
#end
#if($shiro.hasPermission("virtualuser:delete"))
<i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
#end
</div>
</Row>
<table id="jqGrid"></table>
</div>
<Card v-show="!showList">
<p slot="title">{{title}}</p>
<i-form ref="formValidate" :model="virtualUser" :rules="ruleValidate" :label-width="80">
<Form-item label="虚拟账号" prop="account">
<i-input v-model="virtualUser.account" placeholder="虚拟账号" style="width: 500px"/>
</Form-item>
<Form-item label="昵称" prop="nick">
<i-input v-model="virtualUser.nick" placeholder="昵称" style="width: 500px"/>
</Form-item>
<!--<Form-item label="头像" prop="avatar">
<i-input v-model="virtualUser.avatar" placeholder="头像" style="width: 500px"/>
</Form-item>-->
<Form-item label="头像" prop="avatar" >
<!-- <i-input v-model="xPicture.pictureUrl" placeholder="图片地址"/> -->
<upload
multiple
action="../api/osstest/uploadtest"
:before-upload="handleBeforeUpload"
:on-success="vhandleSuccess" :show-upload-list="false" accept="image/jpeg, image/png">
<i-button icon="ios-cloud-upload-outline">请选择图片</i-button>
</upload>
<div id="imgWrapper" style="display: flex;position: relative;">
<div v-for="item in uploadList" style="margin-left: 5px;" :data-img-path="item">
<img :src="item" width="100" height="100" id="itemImg">
<i class="ivu-icon ivu-icon-ios-trash-outline"
style="cursor:pointer;display: flex;font-size: 24px;position: relative;left:11px"
@click="delImg1(item)"></i>
</div>
</div>
</Form-item>
<Form-item>
<i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
<i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
<i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
</Form-item>
</i-form>
</Card>
</div>
<script src="${rc.contextPath}/js/sys/virtualuser.js?_${date.systemTime}"></script>
</body>
</html>
$(function () {
$("#jqGrid").Grid({
url: '../virtualuser/list',
colModel: [
{label: 'id', name: 'id', index: 'id', key: true, hidden: true},
{label: '账号', name: 'account', index: 'account', width: 80},
{label: '昵称', name: 'nick', index: 'nick', width: 80},
{label: '头像', name: 'avatar', index: 'avatar', width: 80, formatter: imageFormat},
{label: '状态', name: 'status', index: 'status', width: 80, formatter: statusFormat},
{label: '创建时间', name: 'createTime', index: 'create_time', width: 80}]
});
});
let vm = new Vue({
el: '#rrapp',
data: {
uploadList:[],
showList: true,
title: null,
virtualUser: {},
ruleValidate: {
name: [
{required: true, message: '名称不能为空', trigger: 'blur'}
]
},
q: {
name: ''
}
},
methods: {
query: function () {
vm.reload();
},
add: function () {
vm.uploadList=[];
vm.showList = false;
vm.title = "新增";
vm.virtualUser = {};
},
update: function (event) {
vm.uploadList=[];
let id = getSelectedRow("#jqGrid");
if (id == null) {
return;
}
vm.showList = false;
vm.title = "修改";
vm.getInfo(id);
},
saveOrUpdate: function (event) {
let url = vm.virtualUser.id == null ? "../virtualuser/save" : "../virtualuser/update";
vm.virtualUser.avatar = vm.uploadList[0];
Ajax.request({
url: url,
params: JSON.stringify(vm.virtualUser),
type: "POST",
contentType: "application/json",
successCallback: function (r) {
alert('操作成功', function (index) {
vm.reload();
});
}
});
},
del: function (event) {
let ids = getSelectedRows("#jqGrid");
if (ids == null) {
return;
}
confirm('确定要删除选中的记录?', function () {
Ajax.request({
url: "../virtualuser/delete",
params: JSON.stringify(ids),
type: "POST",
contentType: "application/json",
successCallback: function () {
alert('操作成功', function (index) {
vm.reload();
});
}
});
});
},
vhandleSuccess(response, file, fileList) {
// "http://diaosaas-prod.oss-cn-shenzhen.aliyuncs.com/education/155728894307110106.jpg"
console.log('shangchuan', response)
vm.uploadList.push(response);
$("#itemImg").show();
},
handleSuccess(response, file, fileList) {
// "http://diaosaas-prod.oss-cn-shenzhen.aliyuncs.com/education/155728894307110106.jpg"
vm.uploadList1.push(response);
$("#skuImg").show();
},
handleBeforeUpload(file) {
// 上传图片大小不超过5M
if (file.size > 5 * 1024 * 1024) {
alert('请上传不超过5M的图片');
return false;
}
const check = this.uploadList.length < 1;
if (!check) {
this.$Notice.warning({
title: '最多只能上传一张图片'
});
return false;
}
// 限制上传文件的宽高
// return this.checkImageWH(file,750,320);
},
// 限制上传图片的宽高
checkImageWH: function (file, width, height) {
let self = this;
return new Promise(function (resolve, reject) {
let filereader = new FileReader();
filereader.onload = e => {
let src = e.target.result;
const image = new Image();
image.onload = function () {
if (width && image.width != width) {
self.$Notice.error({
title: '请上传宽为' + width + "的图片",
});
reject();
} else if (height && image.height != height) {
self.$Notice.error({
title: '请上传高为' + height + "的图片",
});
reject();
} else {
resolve();
}
};
image.onerror = reject;
image.src = src;
};
filereader.readAsDataURL(file);
});
},
// 删除上传图片
delImg1: function (url) {
if (vm.title != "详情") {
vm.uploadList.remove(url);
console.log(url);
Ajax.request({
url: "../api/upload/delFile?url=" + url,
async: false,
type: "POST",
contentType: "application/json",
successCallback: function (resultData) {
// console.log(resultData);
iview.Message.success(resultData.success);
}
});
}
},
getInfo: function (id) {
vm.uploadList=[];
Ajax.request({
url: "../virtualuser/info/" + id,
async: true,
successCallback: function (r) {
vm.virtualUser = r.virtualUser;
vm.uploadList.push(vm.virtualUser.avatar);
}
});
},
reload: function (event) {
vm.showList = true;
let page = $("#jqGrid").jqGrid('getGridParam', 'page');
$("#jqGrid").jqGrid('setGridParam', {
postData: {'name': vm.q.name},
page: page
}).trigger("reloadGrid");
vm.handleReset('formValidate');
},
reloadSearch: function () {
vm.q = {
name: ''
};
vm.reload();
},
handleSubmit: function (name) {
handleSubmitValidate(this, name, function () {
vm.saveOrUpdate()
});
},
handleReset: function (name) {
handleResetForm(this, name);
}
}
});
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论