yuhaitao14 7 years ago
parent
commit
4189c928f3

+ 19 - 0
shop/src/main/java/com/zskk/shop/controller/admin/GoodsManagerController.java

@@ -31,6 +31,7 @@ import com.zskk.shop.exception.ErrorConstant;
 import com.zskk.shop.exception.ZSKKException;
 import com.zskk.shop.service.GoodService;
 import com.zskk.shop.service.SysLabelService;
+import com.zskk.shop.service.TJCenterService;
 
 @Controller
 @RequestMapping("/manage")
@@ -42,6 +43,9 @@ public class GoodsManagerController extends AbstractController{
 	@Autowired
 	private SysLabelService sysLabelService;
 	
+	@Autowired
+	private TJCenterService tjCenterService;
+	
 	@RequestMapping("/goods")
 	@ResponseBody
 	public ControllerResult goods(@RequestParam(name="search", required=false) String search, @RequestParam(name="status", required=false) Integer status, 
@@ -144,4 +148,19 @@ public class GoodsManagerController extends AbstractController{
 	public ControllerResult getGoodLabels(@RequestParam("gid") Integer gid){
 		return new ControllerResult(sysLabelService.getGoodLabels(gid));
 	}
+	
+	@RequestMapping("getPackages")
+	@ResponseBody
+	public ControllerResult getPackages(@RequestParam("search") String search){
+		return new ControllerResult(tjCenterService.getPackages(search));
+	}
+	
+	@RequestMapping("bindPackage")
+	@ResponseBody
+	public ControllerResult bindPackage(@RequestParam("gid") Integer gid, @RequestParam("packageid") String packageid, 
+			@RequestParam("packagename") String packagename){
+		GoodBase base = goodService.queryOneGoodBase(gid);
+		goodService.bindPackage(base, packageid, packagename);
+		return new ControllerResult(Boolean.TRUE);
+	}
 }

+ 66 - 0
shop/src/main/java/com/zskk/shop/controller/bean/PackageBean.java

@@ -0,0 +1,66 @@
+/**
+* @版权信息 (@copyright Copyright 2017-XXXX JDJR.COM All Right Reserved);
+* @see
+* @author 于海涛 京东金融【技术研发部-证券及营销平台研发部-营销平台研发部】
+* @version 1.0
+* @date 2018年6月9日
+*/
+
+package com.zskk.shop.controller.bean;
+
+/**
+ * 套餐
+ * @author yuhaitao
+ *
+ */
+public class PackageBean {
+	private Integer id;
+	private String package_name;
+	private String describe;
+	private String price;
+	private String total;
+	private String remarks;
+	private String content;
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public String getPackage_name() {
+		return package_name;
+	}
+	public void setPackage_name(String package_name) {
+		this.package_name = package_name;
+	}
+	public String getDescribe() {
+		return describe;
+	}
+	public void setDescribe(String describe) {
+		this.describe = describe;
+	}
+	public String getPrice() {
+		return price;
+	}
+	public void setPrice(String price) {
+		this.price = price;
+	}
+	public String getTotal() {
+		return total;
+	}
+	public void setTotal(String total) {
+		this.total = total;
+	}
+	public String getRemarks() {
+		return remarks;
+	}
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+	public String getContent() {
+		return content;
+	}
+	public void setContent(String content) {
+		this.content = content;
+	}
+}

+ 20 - 0
shop/src/main/java/com/zskk/shop/controller/web/BuyOrderController.java

@@ -69,6 +69,26 @@ public class BuyOrderController extends AbstractController {
 		this.initUser(model);
 		return "/mypayedorders";
 	}
+	
+	@RequestMapping("/completedorders")
+	public String completedorders(Model model){
+		UserBean userBean 		= this.getUser();
+		List<Long> ids 	  		= familyPeopleService.queryCompletedBids(userBean.getUserid());
+		List<BuyOrder> orders 	= null;
+		if (ids.isEmpty()){
+			orders = new ArrayList<>(0);
+		}else{
+			orders = buyOrderService.queryBuyOrders(ids);
+		}
+		List<BuyOrderBean> beans 	= new ArrayList<>(orders.size());
+		for (BuyOrder order: orders){
+			BuyOrderBean bean = buyOrderService.toBuyOrderBean(order);
+			beans.add(bean);
+		}
+		model.addAttribute("orders", beans);
+		this.initUser(model);
+		return "/query_report";
+	}
 	/**
 	 * 购买
 	 * @param gid

+ 1 - 0
shop/src/main/java/com/zskk/shop/dao/BuyOrderMapper.java

@@ -18,6 +18,7 @@ import com.zskk.shop.dao.entry.BuyOrderItem;
 public interface BuyOrderMapper {
 	List<BuyOrder> queryMyBuyOrders(String uid);
 	List<BuyOrder> queryMyPayedOrders(String uid);
+	List<BuyOrder> queryBuyOrderByIds(@Param("ids") List<Long> ids);
 	
 	BuyOrder queryBuyOrder(Long id);
 	

+ 1 - 0
shop/src/main/java/com/zskk/shop/dao/FamilyPeopleMapper.java

@@ -33,4 +33,5 @@ public interface FamilyPeopleMapper {
 	Appointment queryAppointment(Integer id);
 	int updateAppointment(Appointment appointment);
 	int updateAppointmentStatus(@Param("tjaid") String tjaid, @Param("tjstatus") Integer tjstatus, @Param("reportUrl") String reportUrl);
+	List<Long> queryCompletedBids(String uid);
 }

+ 7 - 0
shop/src/main/java/com/zskk/shop/dao/entry/Appointment.java

@@ -10,6 +10,7 @@ package com.zskk.shop.dao.entry;
 
 public class Appointment {
 	private Integer id;
+	private String uid;
 	private Long bid;
 	private Long itemid;
 	private Integer fid;
@@ -65,4 +66,10 @@ public class Appointment {
 	public void setTjaid(String tjaid) {
 		this.tjaid = tjaid;
 	}
+	public String getUid() {
+		return uid;
+	}
+	public void setUid(String uid) {
+		this.uid = uid;
+	}
 }

+ 9 - 0
shop/src/main/java/com/zskk/shop/service/BuyOrderService.java

@@ -78,6 +78,15 @@ public class BuyOrderService {
 		return buyOrderMapper.queryMyPayedOrders(uid);
 	}
 	
+	/**
+	 * 查询订单
+	 * @param ids
+	 * @return
+	 */
+	public List<BuyOrder> queryBuyOrders(List<Long> ids){
+		return buyOrderMapper.queryBuyOrderByIds(ids);
+	}
+	
 	/**
 	 * 查询订单
 	 * @param id

+ 5 - 0
shop/src/main/java/com/zskk/shop/service/FamilyPeopleService.java

@@ -147,6 +147,7 @@ public class FamilyPeopleService {
 		}
 		
 		Appointment appointment = new Appointment();
+		appointment.setUid(userBean.getUserid());
 		appointment.setBid(order.getId());
 		appointment.setAtime(atime);
 		appointment.setItemid(item.getId());
@@ -211,6 +212,10 @@ public class FamilyPeopleService {
 		familyPeopleMapper.updateAppointmentStatus(tjid, status, reportUrl);
 	}
 	
+	public List<Long> queryCompletedBids(String uid){
+		return familyPeopleMapper.queryCompletedBids(uid);
+	}
+	
 	/**
 	 * 类型 转换
 	 * @param people

+ 6 - 0
shop/src/main/java/com/zskk/shop/service/GoodService.java

@@ -175,6 +175,12 @@ public class GoodService {
 		}
 	}
 	
+	public int bindPackage(GoodBase base, String packageid, String packagename){
+		base.setPackageid(packageid);
+		base.setPackageName(packagename);
+		return goodMapper.bindPackage(base);
+	}
+	
 	public GoodBean toBaseGoodBean(GoodBase base){
 		GoodBean bean  = new GoodBean();
 		bean.setGid(base.getGid());

+ 39 - 0
shop/src/main/java/com/zskk/shop/service/TJCenterService.java

@@ -16,12 +16,14 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.zskk.shop.controller.bean.PackageBean;
 import com.zskk.shop.dao.entry.Appointment;
 import com.zskk.shop.dao.entry.BuyOrder;
 import com.zskk.shop.dao.entry.FamilyPeople;
@@ -44,6 +46,11 @@ public class TJCenterService {
 	@Value("${zskk.myhost}")
 	private String myhost;
 
+	/**
+	 * 获取详细
+	 * @param id
+	 * @return
+	 */
 	public List<String> getDJDetail(String id) {
 		String url = tjcenter + "/public/api.php/shop/getPackageDetail?id=" + id;
 		try {
@@ -67,6 +74,9 @@ public class TJCenterService {
 		}
 	}
 
+	/**
+	 * 预约
+	 */
 	public String appointment(FamilyPeople people, BuyOrder order, GoodBase good, String atime, String extend) {
 		// 调用体检系统 预约
 		Map<String, String> data = new HashMap<>();
@@ -94,6 +104,11 @@ public class TJCenterService {
 		}
 	}
 	
+	/**
+	 * 取消预约
+	 * @param people
+	 * @param appointment
+	 */
 	public void cancelAppointment(FamilyPeople people, Appointment appointment){
 		Map<String, String> data = new HashMap<>();
 		data.put("id", appointment.getTjaid());
@@ -102,6 +117,30 @@ public class TJCenterService {
 		this.doPost(tjcenter + "public/api.php/shop/cancelSubscribe", data);
 	}
 	
+	public List<PackageBean> getPackages(String search){
+		Map<String, String> data = new HashMap<>();
+		if (StringUtils.isNotBlank(search)){
+			data.put("package_name", search);
+		}
+		String content = this.doPostNoSign(tjcenter + "public/api.php/shop/getPackage", data);
+		JSONObject obj = JSON.parseObject(content);
+		if (obj.containsKey("code") && obj.getInteger("code").equals(1)){
+			return JSON.parseArray(obj.getString("data"), PackageBean.class);
+		}else{
+			return new ArrayList<>();
+		}
+	}
+	
+	private String doPostNoSign(String url, Map<String, String> data){
+		try{
+			String content = HttpClient.doPost(url, data);
+			return content;
+		}catch (Exception e) {
+			LogUtil.sysError(e.getMessage(), e);
+			throw new ZSKKException(ErrorConstant.NET_ERROR);
+		}
+	}
+	
 	private String doPost(String url, Map<String, String> data){
 		String main 		= JSON.toJSONString(data);
 		String nonce		= UUID.randomUUID().toString().replaceAll("-", "");

+ 8 - 0
shop/src/main/resource/mapper/BuyOrderMapper.xml

@@ -22,6 +22,14 @@
 		from buy_order
 		where id=#{id}
 	</select>
+	<select id="queryBuyOrderByIds" resultType="com.zskk.shop.dao.entry.BuyOrder">
+		select <include refid="selectBuyOrder"></include>	
+		from buy_order
+		where id in 
+		<foreach collection="ids" open="(" close=")" separator="," item="id">
+			#{id}
+		</foreach>
+	</select>
 	
 	<insert id="addBuyOrder" parameterType="com.zskk.shop.dao.entry.BuyOrder" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
 		insert into buy_order(uid, uphone, uname, total_price, pay_status, is_del, ctime, ptime)

+ 1 - 1
shop/src/main/resource/mapper/FAQMapper.xml

@@ -19,7 +19,7 @@
 		where id=#{id}
 		limit 1
 	</select>
-	<select id="queryAllCount" resultType="javal.lang.Integer">
+	<select id="queryAllCount" resultType="java.lang.Integer">
 		select count(id) as totalCount
 		from faq
 		where 1=1

+ 8 - 3
shop/src/main/resource/mapper/FamilyPeopleMapper.xml

@@ -27,8 +27,8 @@
 	</update>
 	
 	<insert id="insertAppointment" parameterType="com.zskk.shop.dao.entry.Appointment" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
-		insert into appointment(bid, itemid, fid, atime, extend, ctime)
-		values(#{bid}, ${itemid}, #{fid}, #{atime}, #{extend}, #{ctime})
+		insert into appointment(uid, bid, itemid, fid, atime, extend, ctime)
+		values(#{uid}, #{bid}, ${itemid}, #{fid}, #{atime}, #{extend}, #{ctime})
 	</insert>
 	<select id="queryAppointmentFamily" resultType="com.zskk.shop.dao.entry.FamilyPeopleAppointment">
 		select f.id, f.uid, f.name, f.phone, f.idcard, f.ctime, f.is_del as isDel,
@@ -38,7 +38,7 @@
 		limit 1
 	</select>
 	<select id="queryAppointment" resultType="com.zskk.shop.dao.entry.Appointment">
-		select id, bid, itemid, fid,atime, extend, tjaid, ctime
+		select id, uid, bid, itemid, fid,atime, extend, tjaid, ctime
 		from appointment
 		where id=#{id}
 	</select>
@@ -49,4 +49,9 @@
 	<update id="updateAppointmentStatus">
 		update appointment set tjstatus=#{tjstatus},report_url=#{reportUrl} where tjaid=#{tjaid}
 	</update>
+	<select id="queryCompletedBids" resultType="java.lang.Long">
+		select bid
+		from appointment
+		where uid=#{id} and tjstatus = 2
+	</select>
 </mapper>

+ 67 - 0
shop/src/main/resource/templates/query_report.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>黑龙江昆仑盛和安体检中心</title>
+<link rel="stylesheet" type="text/css" href="../style/common.css"></link>
+<link rel="stylesheet" type="text/css" href="../style/user.css"></link>
+<!--[if lt IE 9]> 
+<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> 
+<![endif]--><!--窗口自适应适配低端IE-->
+<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
+</head>
+
+<body>
+	<div th:include="/fragments :: header"></div>
+	
+    <div class="wp">
+    	<div class="main bgFF">
+            <ul class="subnav l mt20">
+                <li class="u2"><a href="/mypayedorders" class="ca">预约体检</a></li>
+                <li class="u3"><a href="####">报告查询</a></li>
+                <li class="u4"><a href="####">商城订单</a></li>
+                <li class="u6"><a href="####">常见问题</a></li>
+                <li class="u7"><a href="#">修改密码</a></li>
+                <li class="u8"><a href="#">退出登录</a></li>
+            </ul>
+            <div class="l" style="width:80%; ">
+                <div class="f12 c999 mt20">请选择已购套餐项 *</div>
+                <div th:if="${orders.size() eq 0}">
+                    <table class="tab-1-EEE mt20">
+                        <tr>
+                            <td><div class="u-ready-none"><img src="/style/list_none.png" /><p>您的体检报告还没有出来,请耐心等待 <a href="/">体检套餐</a></p></div></td>
+                        </tr>
+                    </table>
+                </div>
+                <table class="tab-1-EEE mt20" th:each="order : ${orders}">
+                    <thead>
+                        <tr>
+                            <td>购买日期:
+                            	<span th:text="${order.ctime}"></span>
+                            	<span class="y cOrange"><span th:text="${order.etime}"></span>前使用</span>
+                            </td>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr th:each="item : ${order.items}">
+                            <td>
+                            	<div class="l">
+                            		<strong class="f12" th:text="${item.good.name}"></strong>
+                            		<div class="cBlue mt10" th:if="${item.fa == null}">适应人群:<span>*</span></div>
+                            		<div class="cBlue mt10" th:if="${item.fa != null}" >体检人:<span th:text="${item.fa.name}"></span> 预约日期:<span th:text="${item.fa.atime + ' ' + item.fa.extend}"></span></div>
+                            	</div>
+                            	<a th:if="${item.fa == null}" th:attr="href='/appointment/goappointment/'+${item.bid}+'/'+${item.id}" class="btn-blue y" >预约体检</a>
+                            	<a th:if="${item.fa != null and item.fa.tjstatus eq -1}" th:attr="href='/appointment/gochangeappointment/'+${item.fa.aid}" class="btn-blue y" >改约</a>
+                            	<a th:if="${item.fa != null and item.fa.tjstatus eq 0}" href="#" class="btn-blue y" >已登记</a>
+                            	<a th:if="${item.fa != null and item.fa.tjstatus eq 1}" href="#" class="btn-blue y" >体检结束(报告生成中)</a>
+                            	<a th:if="${item.fa != null and item.fa.tjstatus eq 2}" th:attr="href=${item.fa.reportUrl}" class="btn-blue y" target="_blank" >查看报告</a>
+                            </td>
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+    </div>
+    <div th:replace="/fragments :: footer"></div>
+</body>
+</html>

+ 2 - 0
shop/static/manager/src/api/index.js

@@ -76,4 +76,6 @@ export default {
     addMUser: (params, vue) => post(`${serverPath}manage/muser/add`, params, vue),
     getGoodLabels: (params, vue) => post(`${serverPath}manage/getGoodLabels`, params, vue),
     okLabels: (params, vue) => post(`${serverPath}manage/label/okLabels`, params, vue),
+    getPackages: (params, vue) => post(`${serverPath}manage/getPackages`, params, vue),
+    bindPackage: (params, vue) => post(`${serverPath}manage/bindPackage`, params, vue)
 }

+ 98 - 0
shop/static/manager/src/components/page/BindPackage.vue

@@ -0,0 +1,98 @@
+<template>
+    <div>
+        <el-row>
+            <el-col :span="3">
+                <el-input v-model="search" placeholder="请输入套餐名称"></el-input>
+            </el-col>
+            <el-col :span="1">
+                &nbsp;
+            </el-col>
+            <el-col :span="1">
+                <el-button type="primary" @click="getItems">查询</el-button>
+            </el-col>
+            <el-col :span="1">
+                &nbsp;
+            </el-col>
+            <el-col :span="1">
+                <el-button type="primary" @click="save">绑定</el-button>
+            </el-col>
+            <el-col :span="1">
+                &nbsp;
+            </el-col>
+            <el-col :span="1">
+                <el-button @click="goBack">取消</el-button>
+            </el-col>
+        </el-row>
+        <el-table :data="items">
+            <el-table-column label="选择" width="80px">
+                <template slot-scope="scope">
+                    <el-radio v-model="package" :label="scope.row">&nbsp;</el-radio>
+                </template>
+            </el-table-column>
+            <el-table-column label="套餐名称" prop="package_name"></el-table-column>
+            <el-table-column label="套餐描述" prop="describe"></el-table-column>
+            <el-table-column label="套餐价格" prop="price"></el-table-column>
+            <el-table-column label="项目总价" prop="total"></el-table-column>
+            <el-table-column label="套餐备注" prop="remarks"></el-table-column>
+        </el-table>
+    </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      search: '',
+      gid: 0,
+      items: [],
+      package: 0
+    }
+  },
+  methods: {
+    getItems: function() {
+      var param = {
+        search: this.search
+      }
+      this.$http.getPackages(param, this).then(res => {
+        if (res.code === 0) {
+          this.items = res.obj
+        }
+      })
+    },
+    goBack: function() {
+      this.$router.back()
+    },
+    save: function() {
+      if (this.package === 0) {
+        this.$message({
+          message: '请选择套餐',
+          type: 'warning'
+        })
+        return
+      }
+      var param = {
+        gid: this.gid,
+        packageid: this.package.id,
+        packagename: this.package.package_name
+      }
+      var that = this
+      this.$http.bindPackage(param, this).then(res => {
+        if (res.code === 0) {
+          this.$message({
+            message: '操作成功',
+            type: 'success',
+            duration: 1000,
+            onClose: function() {
+              that.goBack()
+            }
+          })
+        }
+      })
+    }
+  },
+  mounted: function() {
+    var gid = this.$route.query.gid
+    this.gid = gid
+    this.getItems()
+  }
+}
+</script>

+ 5 - 2
shop/static/manager/src/components/page/GoodsManager.vue

@@ -50,10 +50,10 @@
             <el-table-column label="绑定套餐" prop="packageName">
                 <template slot-scope="scope">
                     <template v-if="scope.row.packageid === '0'">
-                        <el-button type="text" size="small">去绑定</el-button>
+                        <el-button type="text" size="small" @click="goBindPackage(scope.row)">去绑定</el-button>
                     </template>
                     <template v-else>
-                        <el-button type="text" size="small">{{scope.row.packageName}}</el-button>
+                        <el-button type="text" size="small" @click="goBindPackage(scope.row)">{{scope.row.packageName}}</el-button>
                     </template>
                 </template>
             </el-table-column>
@@ -160,6 +160,9 @@ export default {
     },
     goEditLabel: function(row) {
       this.$router.push({ path: '/goodLabelManage', query: { gid: row.gid } })
+    },
+    goBindPackage: function(row) {
+      this.$router.push({ path: '/bindPackage', query: { gid: row.gid } })
     }
   },
   mounted: function() {

+ 4 - 0
shop/static/manager/src/router/index.js

@@ -41,6 +41,10 @@ export default new Router({
                 {
                     path: '/goodLabelManage',
                     component: resolve => require(['../components/page/GoodLabelManage'], resolve)
+                },
+                {
+                    path: '/bindPackage',
+                    component: resolve => require(['../components/page/BindPackage'], resolve)
                 }
             ]
         },