SOA思想结构:
1.查询
//前台controller
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
private CartService cartService;
@RequestMapping("/show")
public String findCartByUserId(Model model){
Long userId = UserThreadLocal.get().getId();
List<Cart> cartList = cartService.findCartByUserId(userId);
model.addAttribute("cartList", cartList);
return "cart";
}
}
//前台service
@Service
public class CartServiceImpl implements CartService {
@Autowired
private HttpClientService httpClient;
private static ObjectMapper objectMapper = new ObjectMapper();
@Override
public List<Cart> findCartByUserId(Long userId) {
String uri = "http://cart.jt.com/cart/query/"+userId;
String jsonData = httpClient.doGet(uri);
SysResult sysResult = null;
try {
sysResult = objectMapper.readValue(jsonData, SysResult.class);
} catch (Exception e) {
e.printStackTrace();
}
List<Cart> cartList = (List<Cart>) sysResult.getData();
return cartList;
}
}
//后台controller
@RequestMapping("/query/{userId}")
@ResponseBody
public SysResult findCartByUserId(@PathVariable Long userId){
try {
List<Cart> cartList = cartService.findCartByUserId(userId);
return SysResult.oK(cartList);
} catch (Exception e) {
//如果报错了进行日志输入
logger.error("报错信息:"+e.getMessage());
//logger.error("~~~~~~~~~~~~~~~~~"+e.getMessage());
}
return SysResult.build(201,"查询商品失败");
}
//后台service
@Service
public class CartServiceImpl implements CartService {
@Autowired
private CartMapper cartMapper;
@Override
public List<Cart> findCartByUserId(Long userId) {
Cart cart = new Cart();
cart.setUserId(userId);
return cartMapper.select(cart);
}
}
//mapper接口:
public interface CartMapper extends SysMapper<Cart>{
Cart findCartByUserIdAndItemId(Cart cart);
}
//xml映射文件
<select id="findCartByUserIdAndItemId" resultType="Cart">
select * from tb_cart where user_id=#{userId} and item_id = #{itemId}
</select>
2.新增
//前台controller
@RequestMapping("/add/{itemId}")
public String saveCart(@PathVariable Long itemId){
Long userId = UserThreadLocal.get().getId();
cartService.saveCart(itemld,userId);
//重定向到购物车展现列表页面
return "redirect:/cart/show.html";
}
//前台service
@Override
public void saveCart(Cart cart) {
String uri = "http://cart.jt.com/cart/save";
Map<String,String> params = new HashMap<String,String>();
params.put("userId",cart.getUserId()+"");
params.put("itemId", cart.getItemId()+"");
params.put("itemTitle",cart.getItemTitle());
params.put("itemImage", cart.getItemImage());
params.put("itemPrice", cart.getItemPrice()+"");
params.put("num",cart.getNum()+"");
httpClient.doPost(uri, params);
}
//后台controller
@RequestMapping("/save")
@ResponseBody
public SysResult saveCart(Cart cart){
try {
cartService.saveCart(cart);
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201,"新增商品失败");
}
//后台service
/**
* 1.先检查购物车信息中是否包含该条信息
* 2.如果没有则做购物车的新增操作
* 3.如果有该数据,则做购物车更新操作
*/
@Override
public void saveCart(Cart cart) {
Cart cartDB = cartMapper.findCartByUserIdAndItemId(cart);
if(cartDB == null){
cart.setCreated(new Date());
cart.setUpdated(cart.getCreated());
cartMapper.insert(cart);
}else{ //获取购物商品数量和
int num = cart.getNum() + cartDB.getNum();
cartDB.setNum(num);
cartDB.setUpdated(new Date());
cartMapper.updateByPrimaryKeySelective(cartDB);
}
}
3.更新
//前台controller
@RequestMapping("/update/num/{itemId}/{num}")
public SysResult updateCartNum(@PathVariable Long itemId,@PathVariable Integer num){
Long userId = UserThreadLocal.get().getId();
cartService.updateCartNum(userId,itemId,num);
//重定向到购物车展现列表页面
return "redirect:/cart/show.html";
}
//前台service
@Override
public void updateCartNum(Long userId, Long itemId, Integer num) {
String uri = "http://cart.jt.com/cart/update/num/"+userId+"/"+itemId +"/"+num;
httpClient.doGet(uri);
}
//后台controller
@RequestMapping("/update/num/{itemId}/{num}")
@ResponseBody
public SysResult updateCartNum(@PathVariable Long userId,@PathVariable Long itemId,@PathVariable Integer num){
try {
cartService.updateCartNum(userId,itemld,num);
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201,"修改商品失败");
}
//后台service
@Override
public void updateCartNum(Cart cart) {
cart.setUpdated(new Date());
cartMapper.updateCartNum(cart);
}
//mapper接口
public interface CartMapper extends SysMapper<Cart> {
Cart dinfCartByUserIdAndItemId(Cart cart);
void updateCartNum(Cart cart);
}
//xml映射文件
<update id="updateCartNum">
update tb_cart set num = #{num},updated = #{updated} where user_id = #{userId} and item_id = #{itemId}
</update>
4.删除
//前台controller
@RequestMapping("/delete/{itemId}")
public String deleteCart(@PathVariable Long itemId){
Long userId = UserThreadLocal.get().getId();
cartService.deleteCart(userId,itemId);
//重定向到购物车展现列表页面
return "redirect:/cart/show.html";
}
//前台service
@Override
public void deleteCart(Long userId, Long itemId) {
String uri = "http://cart.jt.com/cart/delete/"+userId+"/"+itemId;
httpClient.doGet(uri);
}
//后台controller
@RequestMapping("/delete/{userId}/{itemId}")
@ResponseBody
public SysResult deleteCart(@PathVariable Long userId,@PathVariable Long itemId){
try {
cartService.deleteCart(userId,itemId);
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201, "删除商品失败");
}
//后台service
@Override
public void deleteCart(Long userId, Long itemId) {
Cart cart = new Cart();
cart.setUserId(userId);
cart.setItemId(itemId);
super.deleteByWhere(cart);
}