4 系统详细设计与实现
基于Uni-App的助农商城小程序的详细设计与实现主要是根据前面的需求分析和总体设计来设计页面并实现业务逻辑。主要从小程序界面实现、业务逻辑实现这两部分进行介绍。
图4-1 用户注册界面图
注册的代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
用户登录界面用于已注册用户进行账号登录,用户需要输入正确的用户名和密码才能成功登录系统。登录界面应对用户的输入进行验证,并提供找回密码的选项。其界面图如下图4-2所示。
图4-2 用户登录界面图
登录的代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
用户可以查看首页展示的轮播图、通知公告、商品信息和新闻资讯等信息。可以左右滑动查看轮播图信息;点击“商品信息”进入页面可以查看产品展示列表中某个商品的详情并可以收藏、加入购物车、立即购买和联系客服;点击“立即购买”进入页面确认商品信息后可以通过微信、支付宝等方式完成在线支付,购买后可以对商品进行评论。其界面展示如下图4-3所示。
图4-3 首页界面图
用户点击首页下方的“购物车”进入页面可以查看购物车的商品信息,可以对商品的数量进行增减或删除,选择某个商品或多个商品后点击“购买”可以完成商品的购买。其界面展示如下图4-4所示。
图4-4购物车界面图
用户点击首页下方的“新闻资讯”进入页面可以查看新闻资讯列表中某个资讯的详情并可以进行点赞、收藏和发表评论操作。其界面展示如下图4-5所示。
图4-5新闻资讯界面图
用户点击“我的”进入页面后可以查看和管理基本信息、收货地址、收藏、订单、购物车、物流信息、售后信息和订单配送信息。点击“基本信息”进入页面可以修改资料和密码,密码修改后可以用新密码登录系统。点击“收货地址”进入页面可以新建收货地址或对已有的地址进行编辑。点击“物流信息”进入页面可以查看列表中某个订单的物流信息详情并可以提交售后申请信息。可以查看或删除收藏、订单信息;可以查询和重置物流信息、售后信息和订单配送信息。其界面如下图4-6所示。
图4-6 我的界面图
管理员可以查看系统用户(管理员、会员用户、商家用户)列表中某个用户的详情,可以对用户信息进行查询、添加和删除操作。其界面如下图4-7所示。
图4-7系统用户界面图
添加的代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
管理员可以添加物流信息,可以查看物流信息列表中某个订单物流信息详情,可以对列表信息进行查询和删除操作。其界面如下图4-8所示。
图4-8物流信息管理界面图
删除的代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
管理员可以查看售后信息列表中某个用户提交的售后信息详情,可以对列表信息进行查询和删除操作。其界面如下图4-9所示。
图4-9售后信息管理界面图
在系统管理界面,管理员对轮播图进行管控,可以以对轮播图信息进行查询、添加和删除操作。其界面如下图4-10所示。
图4-10系统管理界面图
图片上传的代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
管理员点击通知公告管理下方的“通知公告”进入页面可以查看列表中某个通知公告的详情,可以对通知公告进行查询、添加和删除操作。其界面如下图4-11所示。
图4-11通知公告管理界面图
在“资源管理”菜单管理员对新闻资讯和新闻分类信息进行管控。管理员可以查看新闻资讯列表中某个资讯详情和评论信息,可以查看新闻分类列表中某个分类详情,可以对新闻资讯、新闻分类信息进行查询、添加和删除操作。其界面如下图4-12所示。
图4-12资源管理界面图
在商城管理菜单包括商品信息、分类列表、订单列表和订单配送这四个子菜单。管理员可以查看商品信息列表中某个商品的详情和评论,可以对商品信息、分类列表信息进行查询、添加和删除操作;可以查看订单列表/订单配送中某个订单的详情;可以查询和删除订单列表、订单配送信息。其界面如下图4-13所示。
图4-13商城管理界面图
在商城管理菜单包括商品信息、订单列表和订单配送这三个子菜单。用户可以查看商品信息列表中某个商品的详情和评论,可以对商品信息进行查询、添加和删除操作;可以查看订单列表中某个订单的详情并提交配送信息;可以查询和删除订单列表、订单配送信息。其界面如下图4-14所示。
图4-14商城管理界面图
用户可以添加物流信息,可以查看物流信息列表中某个订单物流信息详情并提交物流状态,可以对列表信息进行查询和删除操作。其界面如下图4-15所示。
图4-15物流信息管理界面图
用户可以查看售后信息列表中某个订单的售后信息详情并进行审核和回复,可以通过商品名称查询售后信息。其界面如下图4-16所示。
图4-16售后信息管理界面图
网站维护公司无锡网站优化福建seo武汉网页设计公司在线生成个人网站小程序商城开发个人网站欣赏组建网站湖南网络推广成都微信小程序建网站公司企业网站湘潭网络推广公司免费域名的网站新疆seo关键词郑州seo优化公司云南网站定制兰州网站建设公司网站优化及推广公司b2b2c深圳网站维护湖南网络营销重庆网站推广郑州网站优化浙江seo真人做网站网络推广深圳深圳软件定制郑州seo优化公司河南建网站