app开发定制公司Java项目:洗浴中心管理系统(java+SSM+JSP+jQuery+javascript+Mysql)

源码获取:app开发定制公司俺的博客首页 "资源" 里下载!

项目介绍

app开发定制公司本项目分为前后台,app开发定制公司包含普通用户与管理员两种角色;
app开发定制公司管理员角色包含以下功能:
app开发定制公司管理员登录,管理员信息管理,查看用户信息,新闻公告管理,产品类型管理,级别信息管理,房间号信息管理,项目信息管理,订单管理,评价信息管理等功能。

用户角色包含以下功能:
查看首页,用户登录,查看商品详情,查看购物车,提交订单,修改个人信息,修改密码,查看我的订单等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 否;
6.数据库:MySql 5.7、8.0等版本均可;


技术栈

1. 后端:Spring springmvc mybatis
2. 前端:JSP+css+javascript+


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2.使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat
3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ 登录
用户账号/密码: user/123456
管理员账号/密码:admin/admin

 

 

 

 

 

订单管理控制层: 

  1. @Controller
  2. public class orderController {
  3. @Autowired
  4. private OrderService orderService;
  5. @RequestMapping("/toOrder")
  6. public String toOrder(HttpServletRequest request,Model model) throws Exception {
  7. Orders orders = new Orders();
  8. Cart cart = (Cart) request.getSession().getAttribute("cart");
  9. User loginUser = (User) request.getSession().getAttribute("loginUser");
  10. if(loginUser==null){
  11. model.addAttribute("message", "对不起您还没有登录");
  12. return "msg";
  13. }
  14. // 0表示没有付款、1表示已付款即将发货 2表示确认收货 3表示交易成功
  15. orders.setState(0);
  16. orders.setOrderTime(new Date());
  17. orders.setUid(loginUser.getUid());
  18. orders.setMoney(cart.getTotale());
  19. orderService.toOrder(orders);
  20. Map<Integer, CartItem> cartItems = cart.getCartItem();
  21. for (Entry<Integer, CartItem> entry : cartItems.entrySet()) {
  22. CartItem cartItem = entry.getValue();
  23. Orderitem orderitem = new Orderitem();
  24. orderitem.setProduct(cartItem.getProduct());
  25. orderitem.setCount(cartItem.getCount());
  26. orderitem.setPid(cartItem.getProduct().getPid());
  27. orderitem.setSubtotal(cartItem.getSubtotle());
  28. orderitem.setOid(orders.getOid());
  29. orders.getOiList().add(orderitem);
  30. orderService.toOrderItem(orderitem);
  31. }
  32. cart.clearCart();
  33. request.getSession().setAttribute("orders", orders);
  34. return "order";
  35. }
  36. // 为定单付款
  37. @RequestMapping("/payOrder")
  38. public String payOrder(Orders orders,@RequestParam String receiveInfo,@RequestParam String phoNum,@RequestParam String accepter) throws Exception {
  39. orders.setReceiveinfo(receiveInfo);
  40. orders.setPhonum(phoNum);
  41. orders.setAccepter(accepter);
  42. orderService.payOrder(orders);
  43. return "redirect:myOrder.action?page=1";
  44. }
  45. //payOrderAganin
  46. @RequestMapping("/payOrderAganin")
  47. public String payOrderAganin(@RequestParam int oid,HttpServletRequest request){
  48. Orders noPayOrder = orderService.findOrderByOid(oid);
  49. request.getSession().setAttribute("orders", noPayOrder);
  50. return "order";
  51. }
  52. // 查询myOrder
  53. @RequestMapping("/myOrder")
  54. public String myOrder(@RequestParam int page, Model model,
  55. HttpServletRequest request) throws Exception {
  56. User loginUser = (User) request.getSession().getAttribute("loginUser");
  57. PageBean<Orders> pageBean = orderService.findOrderByUidAndPage(page,loginUser.getUid());
  58. model.addAttribute("pageBean", pageBean);
  59. return "orderList";
  60. }
  61. // 确认收货
  62. @RequestMapping("/updateState")
  63. public String updateState(@RequestParam int oid ) throws Exception {
  64. orderService.updateOrderStatus(oid, 3);
  65. return "redirect:myOrder.action?page=1";
  66. }
  67. }

购物车管理控制层:

  1. @Controller
  2. public class cartController {
  3. @Autowired
  4. private ProductService productService;
  5. // 添加到购物车
  6. @RequestMapping("/addCart")
  7. public String addCart(HttpServletRequest request,@RequestParam int pid,@RequestParam int count ,Model model){
  8. Product product = productService.finbProductByPid(pid);
  9. // 存进一个购物项
  10. CartItem cartItem = new CartItem();
  11. cartItem.setCount(count);
  12. cartItem.setProduct(product);
  13. cartItem.setSubtotle(count*product.getShopPrice());
  14. // 存进购物车
  15. Cart cart=getCart(request);
  16. cart.addCart(cartItem);
  17. return "cart";
  18. }
  19. // 查看我的购物车
  20. @RequestMapping("/myCart")
  21. public String myCart(HttpServletRequest request,Model model){
  22. User loginUser = (User) request.getSession().getAttribute("loginUser");
  23. if (loginUser == null) {
  24. model.addAttribute("message","您还没有登录!");
  25. return "msg";
  26. }
  27. return "cart";
  28. }
  29. // 清空购物车
  30. @RequestMapping("/clearCart")
  31. public String clearCart(HttpServletRequest request){
  32. Cart cart=getCart(request);
  33. cart.clearCart();
  34. return "redirect:myCart.action";
  35. }
  36. // 删除某个购物项
  37. @RequestMapping("/delProFromCart")
  38. public String delProFromCart(@RequestParam int pid,HttpServletRequest request){
  39. Cart cart=getCart(request);
  40. cart.delProFromCart(pid);
  41. return "redirect:myCart.action";
  42. }
  43. public Cart getCart(HttpServletRequest request) {
  44. Cart cart = (Cart) request.getSession().getAttribute("cart");
  45. if (cart == null) {
  46. cart = new Cart();
  47. request.getSession().setAttribute("cart", cart);
  48. }
  49. return cart;
  50. }
  51. }

后台管理员控制层:

  1. @Controller
  2. public class AdminController {
  3. @Autowired
  4. private UserService userService;
  5. @Autowired
  6. public CategoryService categoryService;
  7. @Autowired
  8. public CategorySecondService categorySecondService;
  9. @Autowired
  10. public ProductService productService;
  11. @Autowired
  12. private OrderService orderService;
  13. @Autowired
  14. private MessageService messageService;
  15. @RequestMapping("/admin/admin_findAll")
  16. public String admin_findAll(Model model, HttpServletRequest request) throws Exception {
  17. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  18. if(adminuserLogin==null){
  19. request.getSession().setAttribute("message","对不起您还没有登录");
  20. return "admin/index";
  21. }
  22. List<User> userList = userService.admin_findAll();
  23. model.addAttribute("userList", userList);
  24. return "admin/user/list";
  25. }
  26. @RequestMapping("/admin/adminCategory_findAll")
  27. public String adminCategory_findAll(Model model, HttpServletRequest request)
  28. throws Exception {
  29. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  30. if(adminuserLogin==null){
  31. request.getSession().setAttribute("message","对不起您还没有登录");
  32. return "admin/index";
  33. }
  34. List<Category> categoryList = categoryService.adminbFindCategory();
  35. /*for (Category category : categoryList) {
  36. System.out.println(category.getCname());
  37. }*/
  38. model.addAttribute("categoryList", categoryList);
  39. return "admin/category/list";
  40. }
  41. @RequestMapping("/admin/adminCategory_add")
  42. public String adminCategory_add(Model model,HttpServletRequest request) throws Exception {
  43. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  44. if(adminuserLogin==null){
  45. request.getSession().setAttribute("message","对不起您还没有登录");
  46. return "admin/index";
  47. }
  48. // List<Category> categoryList = categoryService.adminbFindCategory();
  49. // model.addAttribute("categoryList", categoryList);
  50. return "admin/category/add";
  51. }
  52. @RequestMapping("/admin/adminCategory_save")
  53. public String adminCategory_save(@RequestParam String cname,HttpServletRequest request)
  54. throws Exception {
  55. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  56. if(adminuserLogin==null){
  57. request.getSession().setAttribute("message","对不起您还没有登录");
  58. return "admin/index";
  59. }
  60. Category addCategory = new Category();
  61. addCategory.setCname(cname);
  62. categoryService.addCategory(addCategory);
  63. return "redirect:/admin/adminCategory_findAll.action";
  64. }
  65. @RequestMapping("/admin/adminCategory_edit")
  66. public String adminCategory_delete(@RequestParam int cid, Model model,HttpServletRequest request)
  67. throws Exception {
  68. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  69. if(adminuserLogin==null){
  70. request.getSession().setAttribute("message","对不起您还没有登录");
  71. return "admin/index";
  72. }
  73. Category existCategory = categoryService.findCategory(cid);
  74. model.addAttribute("existCategory", existCategory);
  75. return "admin/category/edit";
  76. }
  77. @RequestMapping("/admin/adminCategory_update")
  78. public String adminCategory_update(@RequestParam int cid,
  79. @RequestParam String cname,HttpServletRequest request) {
  80. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  81. if(adminuserLogin==null){
  82. request.getSession().setAttribute("message","对不起您还没有登录");
  83. return "admin/index";
  84. }
  85. Category category = new Category();
  86. category.setCid(cid);
  87. category.setCname(cname);
  88. categoryService.adminCategory_update(category);
  89. return "redirect:/admin/adminCategory_findAll.action";
  90. }
  91. @RequestMapping("/admin/adminCategory_delete")
  92. public String adminCategory_delete(@RequestParam int cid,HttpServletRequest request) throws Exception {
  93. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  94. if(adminuserLogin==null){
  95. request.getSession().setAttribute("message","对不起您还没有登录");
  96. return "admin/index";
  97. }
  98. categorySecondService.adminCategorySecond_deleteByCid(cid);
  99. categoryService.deleteCategoryByCid(cid);
  100. return "redirect:/admin/adminCategory_findAll.action";
  101. }
  102. // admin 的二级分类的管理
  103. @RequestMapping("/admin/adminCategorySecond_findAllByPage")
  104. public String adminCategorySecond_findAllByPage(@RequestParam int page,Model model,HttpServletRequest request) {
  105. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  106. if(adminuserLogin==null){
  107. request.getSession().setAttribute("message","对不起您还没有登录");
  108. return "admin/index";
  109. }
  110. PageBean<Categorysecond> csPageBean = categorySecondService
  111. .adminCategorySecond_findAllByPage(page);
  112. /*List<Categorysecond> list = csPageBean.getList();
  113. for (Categorysecond categorysecond : list) {
  114. System.out.println(categorysecond.getCsname());
  115. }*/
  116. model.addAttribute("csPageBean", csPageBean);
  117. return "admin/categorysecond/list";
  118. }
  119. @RequestMapping("admin/adminCategorySecond_addPage")
  120. public String adminCategorySecond_addPage(Model model,HttpServletRequest request) throws Exception{
  121. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  122. if(adminuserLogin==null){
  123. request.getSession().setAttribute("message","对不起您还没有登录");
  124. return "admin/index";
  125. }
  126. List<Category> categoryList = categoryService.adminbFindCategory();
  127. model.addAttribute("categoryList", categoryList);
  128. return "admin/categorysecond/add";
  129. }
  130. @RequestMapping("admin/adminCategorySecond_save")
  131. public String adminCategorySecond_save(@RequestParam String csname,@RequestParam int cid,HttpServletRequest request) throws Exception{
  132. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  133. if(adminuserLogin==null){
  134. request.getSession().setAttribute("message","对不起您还没有登录");
  135. return "admin/index";
  136. }
  137. Categorysecond categorysecond = new Categorysecond();
  138. categorysecond.setCsname(csname);
  139. categorysecond.setCid(cid);
  140. categorySecondService.adminCategorySecond_save(categorysecond);
  141. return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
  142. }
  143. @RequestMapping("admin/adminCategorySecond_edit")
  144. public String adminCategorySecond_edit(@RequestParam int csid,Model model,HttpServletRequest request) throws Exception{
  145. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  146. if(adminuserLogin==null){
  147. request.getSession().setAttribute("message","对不起您还没有登录");
  148. return "admin/index";
  149. }
  150. Categorysecond findByCsid = categorySecondService.findByCsid(csid);
  151. model.addAttribute("findByCsid", findByCsid);
  152. return "admin/categorysecond/edit";
  153. }
  154. @RequestMapping("admin/adminCategorySecond_update")
  155. public String adminCategorySecond_update(@RequestParam String csname,@RequestParam int csid,HttpServletRequest request){
  156. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  157. if(adminuserLogin==null){
  158. request.getSession().setAttribute("message","对不起您还没有登录");
  159. return "admin/index";
  160. }
  161. Categorysecond categorysecond = new Categorysecond();
  162. categorysecond.setCsname(csname);
  163. categorysecond.setCsid(csid);
  164. categorySecondService.adminCategorySecond_update(categorysecond);
  165. return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
  166. }
  167. @RequestMapping("admin/adminCategorySecond_delete")
  168. public String adminCategorySecond_delete(@RequestParam int csid,HttpServletRequest request) throws Exception{
  169. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  170. if(adminuserLogin==null){
  171. request.getSession().setAttribute("message","对不起您还没有登录");
  172. return "admin/index";
  173. }
  174. categorySecondService.adminCategorySecond_delete(csid);
  175. return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
  176. }
  177. //admin的商品管理
  178. @RequestMapping("/admin/adminProduct_findAllByPage")
  179. public String adminProduct_findAllByPage(@RequestParam int page, Model model,HttpServletRequest request)
  180. throws Exception {
  181. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  182. if(adminuserLogin==null){
  183. request.getSession().setAttribute("message","对不起您还没有登录");
  184. return "admin/index";
  185. }
  186. PageBean<Product> allProPageBean = productService.findAllProduct(page);
  187. model.addAttribute("allProPageBean", allProPageBean);
  188. return "admin/product/list";
  189. }
  190. @RequestMapping("/admin/adminProduct_addPage")
  191. public String adminProduct_addPage(Model model,HttpServletRequest request) throws Exception {
  192. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  193. if(adminuserLogin==null){
  194. request.getSession().setAttribute("message","对不起您还没有登录");
  195. return "admin/index";
  196. }
  197. //查询出所有的二级分类
  198. List<Categorysecond> cslist = categorySecondService.findAll();
  199. /*for (Categorysecond categorysecond : cslist) {
  200. System.out.println(categorysecond.getCsname());
  201. }*/
  202. model.addAttribute("cslist", cslist);
  203. return "admin/product/add";
  204. }
  205. @RequestMapping("/admin/adminProduct_save")
  206. public String adminProduct_save(Product product,HttpServletRequest request,MultipartFile file) throws Exception {
  207. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  208. if(adminuserLogin==null){
  209. request.getSession().setAttribute("message","对不起您还没有登录");
  210. return "admin/index";
  211. }
  212. product.setPdate(new Date());
  213. // 上传图片
  214. if (file != null) {
  215. String path = request.getServletContext().getRealPath(
  216. "/products");
  217. String uploadFileName = file.getOriginalFilename();
  218. String fileName = UUIDUtiils.getUUID()+uploadFileName;
  219. File diskFile = new File(path + "//" + fileName);
  220. file.transferTo(diskFile);
  221. product.setImage("products/" + fileName);
  222. }
  223. System.out.println(product.getImage());
  224. productService.adminProduct_save(product);
  225. return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
  226. }
  227. @RequestMapping("admin/adminProduct_deletecs")
  228. public String adminProduct_deletecs(@RequestParam int pid,HttpServletRequest request) throws Exception{
  229. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  230. if(adminuserLogin==null){
  231. request.getSession().setAttribute("message","对不起您还没有登录");
  232. return "admin/index";
  233. }
  234. productService.adminProduct_deletecs(pid);
  235. return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
  236. }
  237. /**
  238. * 编辑商品
  239. *
  240. * @param pid
  241. * @param model
  242. * @param request
  243. * @return
  244. * @throws Exception
  245. */
  246. @RequestMapping("admin/adminProduct_edit")
  247. public String adminProduct_edit(@RequestParam int pid,Model model,HttpServletRequest request) throws Exception{
  248. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  249. if(adminuserLogin==null){
  250. request.getSession().setAttribute("message","对不起您还没有登录");
  251. return "admin/index";
  252. }
  253. Product product = productService.finbProductByPid(pid);
  254. model.addAttribute("findByPid", product);
  255. //查询出所有的二级分类
  256. List<Categorysecond> cslist = categorySecondService.findAll();
  257. model.addAttribute("cslist", cslist);
  258. return "admin/product/edit";
  259. }
  260. @RequestMapping("/admin/adminProduct_update")
  261. public String adminProduct_update(Product product,HttpServletRequest request,MultipartFile file) throws Exception {
  262. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  263. if(adminuserLogin==null){
  264. request.getSession().setAttribute("message","对不起您还没有登录");
  265. return "admin/index";
  266. }
  267. product.setPdate(new Date());
  268. // 上传图片
  269. if (file != null) {
  270. String path = request.getServletContext().getRealPath(
  271. "/products");
  272. String uploadFileName = file.getOriginalFilename();
  273. String fileName = UUIDUtiils.getUUID()+uploadFileName;
  274. File diskFile = new File(path + "//" + fileName);
  275. file.transferTo(diskFile);
  276. product.setImage("products/" + fileName);
  277. }
  278. productService.adminProduct_update(product);
  279. return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
  280. }
  281. /** 订单管理模块 **/
  282. @RequestMapping("/admin/adminOrder_findAllByPage")
  283. public String adminOrder_findAllByPage(@RequestParam int page, Model model,HttpServletRequest request)
  284. throws Exception {
  285. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  286. if(adminuserLogin==null){
  287. request.getSession().setAttribute("message","对不起您还没有登录");
  288. return "admin/index";
  289. }
  290. PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(page);
  291. model.addAttribute("pageBean", allProPageBean);
  292. return "admin/order/list";
  293. }
  294. //adminOrder_findByState
  295. @RequestMapping("/admin/adminOrder_findByState")
  296. public String adminOrder_findByState(@RequestParam int page,@RequestParam int state, Model model,HttpServletRequest request)
  297. throws Exception {
  298. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  299. if(adminuserLogin==null){
  300. request.getSession().setAttribute("message","对不起您还没有登录");
  301. return "admin/index";
  302. }
  303. PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state,page);
  304. model.addAttribute("pageBean", allProPageBean);
  305. return "admin/order/list";
  306. }
  307. //订单详情
  308. //adminOrder_findOrderItem
  309. @RequestMapping("/admin/adminOrder_findOrderItem")
  310. public String adminOrder_findOrderItem(@RequestParam int oid, Model model,HttpServletRequest request)
  311. throws Exception {
  312. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  313. if(adminuserLogin==null){
  314. request.getSession().setAttribute("message","对不起您还没有登录");
  315. return "admin/index";
  316. }
  317. Orders orderItems = orderService.findOrderByOid(oid);
  318. model.addAttribute("orderItems", orderItems);
  319. return "admin/order/list";
  320. }
  321. //更新订单状态
  322. @RequestMapping("/admin/adminOrder_updateState")
  323. public String adminOrder_updateState(@RequestParam int oid, @RequestParam int status, Model model,HttpServletRequest request)
  324. throws Exception {
  325. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  326. if(adminuserLogin==null){
  327. request.getSession().setAttribute("message","对不起您还没有登录");
  328. return "admin/index";
  329. }
  330. orderService.updateOrderStatus(oid, status);
  331. return "redirect:/admin/adminOrder_findAllByPage.action?page=1";
  332. }
  333. //后台留言管理
  334. @RequestMapping("/admin/adminMessage_findAllByPage")
  335. public String adminMessage_findAllByPage(@RequestParam int page, Model model,HttpServletRequest request)
  336. throws Exception {
  337. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  338. if(adminuserLogin==null){
  339. request.getSession().setAttribute("message","对不起您还没有登录");
  340. return "admin/index";
  341. }
  342. PageBean<Message> pageBean = messageService.findAllMessageByPage(page);
  343. model.addAttribute("pageBean", pageBean);
  344. return "admin/message/list";
  345. }
  346. @RequestMapping("/admin/adminMessage_delete")
  347. public String adminOrder_updateState(@RequestParam int messageid, Model model,HttpServletRequest request)
  348. throws Exception {
  349. Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
  350. if(adminuserLogin==null){
  351. request.getSession().setAttribute("message","对不起您还没有登录");
  352. return "admin/index";
  353. }
  354. messageService.deleteMessage(messageid);
  355. return "redirect:/admin/adminMessage_findAllByPage.action?page=1";
  356. }
  357. }

源码获取:俺的博客首页 "资源" 里下载! 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发