gitHouse

package com.sun.gifthouse.Controller;

import com.sun.gifthouse.Utils.GoodsUtil;
import com.sun.gifthouse.exception.GlobalException;
import com.sun.gifthouse.po.Goods;
import com.sun.gifthouse.po.ShoppingInfo;
import com.sun.gifthouse.po.User;
import com.sun.gifthouse.result.CodeMsg;
import com.sun.gifthouse.result.Result;
import com.sun.gifthouse.service.GoodsService;
import com.sun.gifthouse.service.UserService;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Controller
public class ApplicationController {

    @Resource
    private UserService userService;

    @Resource
    private GoodsService goodsService;

    @RequestMapping("/login")
    @ResponseBody
    public Result<Boolean> login(User user){
        if (user == null || user.getUsername() == null || user.getUsername().isEmpty() ||
                user.getPassword() == null || user.getPassword().isEmpty()) throw new GlobalException(CodeMsg.NO_USER);
        userService.login(user);
        return Result.success(true);
    }

    @GetMapping("/getUser")
    @ResponseBody
    public Result<User> getUser(String username){
        User user = userService.getUser(username);
        return Result.success(user);
    }

    @GetMapping("/getGoods")
    @ResponseBody
    public Result<List> getGoods(){
        List<Object> list = goodsService.getAllGoods();
        LoggerFactory.getLogger("12").info("success");
        return Result.success(list);
    }

    @GetMapping("/buy")
    @ResponseBody
    public Result<Boolean> buy(String username, Integer goodsId){
        goodsService.buy(username, goodsId);
        return Result.success(true);
    }

    @GetMapping("/getShops")
    @ResponseBody
    public Result<List> getShops(String username){
        List<ShoppingInfo> list = goodsService.getShops(username);
        return Result.success(list);
    }


}

GlobalException         
package com.sun.gifthouse.exception;


import com.sun.gifthouse.result.CodeMsg;

public class GlobalException extends RuntimeException{
   
   private static final long serialVersionUID = 1L;
   
   private CodeMsg cm;
   
   public GlobalException(CodeMsg cm) {
      super(cm.toString());
      this.cm = cm;
   }

   public CodeMsg getCm() {
      return cm;
   }


   public static long getSerialversionuid() {
      return serialVersionUID;
   }

}

GlobalExceptionHandler
package com.sun.gifthouse.exception;

import com.sun.gifthouse.result.CodeMsg;
import com.sun.gifthouse.result.Result;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
   
   @ExceptionHandler(value = Exception.class)
   public Result<String> exceptionHandler(HttpServletRequest request, Exception e){
      e.printStackTrace();
      if(e instanceof GlobalException) {
         GlobalException ex = (GlobalException)e;
         return Result.error(ex.getCm());
      }
      if(e instanceof BindException) {
         BindException ex = (BindException)e;
         List<ObjectError> errors = ex.getAllErrors();
         ObjectError error = errors.get(0);
         String msg = error.getDefaultMessage();
         return Result.error(CodeMsg.BIND_ERROR.fillArgs(msg));
      }else {
         return Result.error(CodeMsg.SERVER_ERROR);
      }
   }

}

Goods
package com.sun.gifthouse.po;

import lombok.Data;

@Data
public class Goods {
    private Integer id;
    private String discription;
    private Integer number;
    private Integer points;

    public Goods(Integer id, String discription, Integer number, Integer points) {
        this.id = id;
        this.discription = discription;
        this.number = number;
        this.points = points;
    }
}

ShoppingInfo
package com.sun.gifthouse.po;

import lombok.Data;

@Data
public class ShoppingInfo {
    private Integer id;
    private Integer goodsId;
    private String discription;
    private Integer number;
    private Integer points;
    private String username;

    public ShoppingInfo(Integer id, Integer goodsId, String discription, Integer number, Integer points, String username) {
        this.id = id;
        this.goodsId = goodsId;
        this.discription = discription;
        this.number = number;
        this.points = points;
        this.username = username;
    }
}

User
package com.sun.gifthouse.po;

import lombok.Data;

@Data
public class User {

    private String username;
    private String password;
    private Integer points;

    public User(String username, String password, Integer points) {
        this.username = username;
        this.password = password;
        this.points = points;
    }
}

CodeMsg
package com.sun.gifthouse.result;

public class CodeMsg {
   private int code;
   private String msg;
   
   //通用异常 5001XX
   public static CodeMsg SUCCESS = new CodeMsg(0, "success");
   public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务器异常");
   public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
   //User模块 5002XX
   public static CodeMsg NO_USER = new CodeMsg(500201,"账号不存在");
   public static CodeMsg NO_USERNAME = new CodeMsg(500202, "该用户名不存在");
   public static CodeMsg ERROR_PASSWORD = new CodeMsg(500203,"密码错误");

   //Shop模块 5003XX
   public static CodeMsg INSUFFICIENT_POINTS = new CodeMsg(500301,"积分不足");
   public static CodeMsg MOBILE_ERROR = new CodeMsg(500213,"手机号格式错误");
   public static CodeMsg MOBILE_NOT_EXIST = new CodeMsg(500214,"手机号不存在");
   public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215,"密码错误");
   public static CodeMsg WRONG_ANSWER = new CodeMsg(500216,"答案错误");

   public static CodeMsg USER_EXIST = new CodeMsg(500218,"用户已存在");

   
   CodeMsg(int code, String msg){
      this.code = code;
      this.msg = msg;
   }
   public int getCode() {
      return code;
   }
   public String getMsg() {
      return msg;
   }
   
   public CodeMsg fillArgs(Object...args ) {
      int code = this.code;
      String message = String.format(this.msg, args);
      return new CodeMsg(code, message);
   }
   @Override
   public String toString() {
      return "CodeMsg [code=" + code + ", msg=" + msg + "]";
   }

   

}

Result

package com.sun.gifthouse.result;

public class Result <T>{
   private int code;
   private String msg;
   private T data;
   //成功的时候调用
   public static <T> Result<T> success(T data) {
      return new Result<T>(data);
      
   }
   //失败的时候调用
   public static <T> Result<T> error(CodeMsg codeMsg){
      return new Result<T>(codeMsg);
      
   }
   Result(T data){
      this.code = 0;
      this.msg = "success";
      this.data = data;
   }
   
   Result(CodeMsg codeMsg){
      this.code = codeMsg.getCode();
      this.msg = codeMsg.getMsg();
   }
   
   public int getCode() {
      return code;
   }
   public String getMsg() {
      return msg;
   }
   public T getData() {
      return data;
   }
   
}

GoodsService
package com.sun.gifthouse.service;

import com.sun.gifthouse.Utils.GoodsUtil;
import com.sun.gifthouse.Utils.ShopUtil;
import com.sun.gifthouse.Utils.UserUtil;
import com.sun.gifthouse.exception.GlobalException;
import com.sun.gifthouse.po.Goods;
import com.sun.gifthouse.po.ShoppingInfo;
import com.sun.gifthouse.result.CodeMsg;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class GoodsService {
    public List<Object> getAllGoods() {
        return GoodsUtil.getAllGoods();
    }

    public void buy(String username, Integer goodsId) {
        ShopUtil.buy(username, goodsId);
    }

    public List<ShoppingInfo> getShops(String username) {
        if (UserUtil.getUser(username) == null) throw new GlobalException(CodeMsg.NO_USERNAME);
        return ShopUtil.getShops(username);
    }
}

UserService

package com.sun.gifthouse.service;

import com.sun.gifthouse.Utils.UserUtil;
import com.sun.gifthouse.po.User;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    public void login(User user) {
        UserUtil.login(user);
    }

    public User getUser(String username) {
        return UserUtil.getUser(username);
    }
}

GoodsUtil

package com.sun.gifthouse.Utils;

import com.sun.gifthouse.po.Goods;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

public class GoodsUtil {
    private static final ConcurrentHashMap<Integer, Goods> goodsMap = new ConcurrentHashMap<>();;
    static {
        goodsMap.put(1, new Goods(1, "面纸", 1000, 100));
        goodsMap.put(2, new Goods(2, "毛巾", 1000, 200));
        goodsMap.put(3, new Goods(3, "洗衣液", 200, 500));
        goodsMap.put(4, new Goods(4, "饮料", 100, 1000));
    }

    public static List<Object> getAllGoods() {
        LoggerFactory.getLogger("12").info(goodsMap.values().toArray().toString());
        return Arrays.asList(goodsMap.values().toArray());
    }

    public static Goods getGoods(Integer id){
        return goodsMap.get(id);
    }

    public static void buy(String username, Integer goodsId) {

    }

    public static void setGoods(Integer goodsId, Goods goods) {
        goodsMap.replace(goodsId, goods);
    }
}

ShopUtils

package com.sun.gifthouse.Utils;

import com.sun.gifthouse.exception.GlobalException;
import com.sun.gifthouse.po.Goods;
import com.sun.gifthouse.po.ShoppingInfo;
import com.sun.gifthouse.po.User;
import com.sun.gifthouse.result.CodeMsg;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class ShopUtil {
    private static final ConcurrentHashMap<Integer, ShoppingInfo> shops = new ConcurrentHashMap<>();

    public static void buy(String username, Integer goodsId) {
        User user = UserUtil.getUser(username);
        Goods goods = GoodsUtil.getGoods(goodsId);
        if(user.getPoints() < goods.getPoints())
            throw new GlobalException(CodeMsg.INSUFFICIENT_POINTS);
        user.setPoints(user.getPoints() - goods.getPoints());
        shops.put(shops.size(), new ShoppingInfo(shops.size(), goodsId, goods.getDiscription(),
                goods.getNumber(), goods.getPoints(), user.getUsername()));
        goods.setNumber(goods.getNumber() - 1);
        UserUtil.setUser(user.getUsername(), user);
        GoodsUtil.setGoods(goodsId, goods);
    }


    public static List<ShoppingInfo> getShops(String username) {
        List<ShoppingInfo> list = new ArrayList<>();
        Iterator<Map.Entry<Integer, ShoppingInfo>> it = shops.entrySet().iterator();
        while (it.hasNext()){
            Map.Entry<Integer, ShoppingInfo> entry = it.next();
            LoggerFactory.getLogger("11").info(entry.toString());
            if (username.equals(entry.getValue().getUsername())) list.add(entry.getValue());
        }
        return list;
    }
}

UserUtil

package com.sun.gifthouse.Utils;

import com.sun.gifthouse.exception.GlobalException;
import com.sun.gifthouse.po.User;
import com.sun.gifthouse.result.CodeMsg;

import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;

public class UserUtil {
    private static final ConcurrentHashMap<String, User> users = new ConcurrentHashMap<>();
    static {
        users.put("111", new User("111", "111", 1000));
        users.put("222", new User("222", "222", 2000));
    }
    public static void login(User user) {
        if (!users.containsKey(user.getUsername())){
            throw new GlobalException(CodeMsg.NO_USERNAME);
        }
        User data = users.get(user.getUsername());
        if (!user.getPassword().equals(data.getPassword())) throw new GlobalException(CodeMsg.ERROR_PASSWORD);
    }

    public static User getUser(String username) {
        if (!users.containsKey(username)){
            throw new GlobalException(CodeMsg.NO_USER);
        }
        return users.get(username);
    }

    public static void setUser(String username, User user) {
        users.replace(username, user);
    }
}

server.port=9090
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值