浏览代码

Merge branch 'master' of zhh/kmall-haikong into master

lhm 3 年之前
父节点
当前提交
6a6d2bb155
共有 34 个文件被更改,包括 306 次插入118 次删除
  1. 7 2
      kmall-admin/src/main/java/com/kmall/admin/controller/CategoryController.java
  2. 17 2
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivityFormController.java
  3. 1 0
      kmall-admin/src/main/java/com/kmall/admin/dao/CategoryDao.java
  4. 9 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java
  5. 10 0
      kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2MemberConsumptionRecordsDao.java
  6. 10 8
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CategoryServiceImpl.java
  7. 4 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/MerchServiceImpl.java
  8. 7 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  9. 8 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/SupplierServiceImpl.java
  10. 11 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java
  11. 0 1
      kmall-admin/src/main/resources/XmlTemplate/CategoryDtoList.xml
  12. 9 2
      kmall-admin/src/main/resources/mybatis/mapper/CashierDao.xml
  13. 6 0
      kmall-admin/src/main/resources/mybatis/mapper/ProductDao.xml
  14. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml
  15. 11 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml
  16. 27 0
      kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml
  17. 3 0
      kmall-admin/src/main/webapp/WEB-INF/page/cashier/cashierManager.html
  18. 55 55
      kmall-admin/src/main/webapp/WEB-INF/page/shop/category.html
  19. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/shop/merch.html
  20. 3 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/product.html
  21. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/shop/supplier.html
  22. 7 4
      kmall-admin/src/main/webapp/js/cashier/cashierManager.js
  23. 1 1
      kmall-admin/src/main/webapp/js/cashier/salerecord.js
  24. 4 2
      kmall-admin/src/main/webapp/js/mk/mkactivityform.js
  25. 13 3
      kmall-admin/src/main/webapp/js/sale/sale.js
  26. 16 9
      kmall-admin/src/main/webapp/js/shop/category.js
  27. 0 9
      kmall-admin/src/main/webapp/js/shop/merch.js
  28. 7 6
      kmall-admin/src/main/webapp/js/shop/product.js
  29. 4 2
      kmall-admin/src/main/webapp/js/shop/supplier.js
  30. 1 2
      kmall-admin/src/main/webapp/login.html
  31. 二进制
      kmall-admin/src/main/webapp/statics/file/category_yyyy_mm_dd_v1.0.0.xls
  32. 5 6
      kmall-admin/src/main/webapp/userLogin.html
  33. 26 0
      kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/CashInfo.java
  34. 21 0
      kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/Goods.java

+ 7 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/CategoryController.java

@@ -63,13 +63,13 @@ public class CategoryController {
 
         List<CategoryEntity> categoryList = categoryService.queryList(query);
 
-        // 获取id
+        // 获取当前一级节点的id
         List<Integer> parentIdList = new ArrayList<>();
          for (CategoryEntity c : categoryList) {
              parentIdList.add(c.getId());
         }
 
-        // 获取对应的所有子节点
+        // 查询所有一级节点的子节点
         List<CategoryEntity> categoryChildList = categoryService.queryListByParentId(parentIdList);
         categoryList.addAll(categoryChildList);
 
@@ -127,6 +127,10 @@ public class CategoryController {
     @RequestMapping("/update")
     @RequiresPermissions("category:update")
     public R update(@RequestBody CategoryEntity category) {
+        if (category.getSortOrder() == null) {
+            category.setSortOrder(0);
+        }
+
         category.setName(HtmlUtils.htmlUnescape(category.getName()));
         category.setFrontDesc(HtmlUtils.htmlUnescape(category.getFrontDesc()));
         categoryService.update(category);
@@ -148,6 +152,7 @@ public class CategoryController {
     /**
      * 查看所有列表
      */
+    @Deprecated
     @RequestMapping("/queryAll")
     public R queryAll(@RequestParam Map<String, Object> params) {
 

+ 17 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivityFormController.java

@@ -9,7 +9,10 @@ import com.kmall.admin.service.mk.MkActivityFormService;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
+import com.kmall.common.utils.RRException;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.CollectionUtils;
@@ -25,6 +28,8 @@ import org.springframework.web.bind.annotation.*;
 @Controller
 @RequestMapping("mkactivityform")
 public class MkActivityFormController {
+    private static final Logger logger = LoggerFactory.getLogger(MkActivityFormController.class);
+
     @Autowired
     private MkActivityFormService mkActivityFormService;
 
@@ -69,7 +74,12 @@ public class MkActivityFormController {
     @RequiresPermissions("mkactivityform:save")
     @ResponseBody
     public R save(@RequestBody MkActivityFormEntity mkActivityForm) {
-        mkActivityFormService.save(mkActivityForm);
+        try {
+            mkActivityFormService.save(mkActivityForm);
+        } catch (RRException e) {
+            logger.error(e.getMsg());
+            return R.error(e.getMsg());
+        }
 
         return R.ok();
     }
@@ -81,7 +91,12 @@ public class MkActivityFormController {
     @RequiresPermissions("mkactivityform:update")
     @ResponseBody
     public R update(@RequestBody MkActivityFormEntity mkActivityForm) {
-        mkActivityFormService.update(mkActivityForm);
+        try {
+            mkActivityFormService.update(mkActivityForm);
+        } catch (RRException e) {
+            logger.error(e.getMsg());
+            return R.error(e.getMsg());
+        }
 
         return R.ok();
     }

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/CategoryDao.java

@@ -44,6 +44,7 @@ public interface CategoryDao extends BaseDao<CategoryEntity> {
     /**
      * 根据名称和级别查询是否存在对象
      *
+     * @author zhuhh
      * @param name
      * @param level
      * @return

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java

@@ -3,6 +3,7 @@ package com.kmall.admin.dao.mk;
 import com.kmall.admin.entity.mk.MkActivitiesEntity;
 import com.kmall.admin.entity.mk.MkActivityFormEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -20,4 +21,12 @@ public interface MkActivityFormDao extends BaseDao<MkActivityFormEntity> {
 
     List<MkActivitiesEntity> queryMkactivitiesList(Map<String, Object> map);
 
+    /**
+     * 根据活动代码查询
+     *
+     * @param mkCode 活动代码
+     * @return
+     */
+    MkActivityFormEntity queryObjectByMkCode(@Param("mkCode") String mkCode);
+
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2MemberConsumptionRecordsDao.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao.vip;
 
 import com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 会员消费记录表Dao
@@ -12,4 +13,13 @@ import com.kmall.manager.dao.BaseDao;
  */
 public interface Mall2MemberConsumptionRecordsDao extends BaseDao<Mall2MemberConsumptionRecordsEntity> {
 
+    /**
+     * 根据订单编号orderSn查询对象
+     *
+     * @author zhuhh
+     * @param orderSn 订单编号
+     * @return
+     */
+    Mall2MemberConsumptionRecordsEntity queryObjectByOrderSn(@Param("orderSn") String orderSn);
+
 }

+ 10 - 8
kmall-admin/src/main/java/com/kmall/admin/service/impl/CategoryServiceImpl.java

@@ -58,7 +58,7 @@ public class CategoryServiceImpl implements CategoryService {
 
     @Override
     public int save(CategoryEntity category) {
-        if (Dict.Level.item_L1.getItem().equals(category.getLevel())) {
+        if (Dict.Level.item_L1.getItem().equalsIgnoreCase(category.getLevel())) {
             category.setParentId(0);
         } else {
             if (category.getParentId() == null) {
@@ -66,7 +66,7 @@ public class CategoryServiceImpl implements CategoryService {
             }
         }
 
-        Map<String, Object> valideDate = MapBeanUtil.fromObject(category);
+        // Map<String, Object> valideDate = MapBeanUtil.fromObject(category);
 //        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
 //        builder.put("merchSn", "商户");
 //        if("2".equals(category.getShare())){
@@ -76,9 +76,6 @@ public class CategoryServiceImpl implements CategoryService {
 //        if (Integer.valueOf(r.get("code").toString()) != 0) {
 //            throw new RRException(r.get("msg").toString());
 //        }
-        if(category.getLevel().equalsIgnoreCase("L1")){
-            category.setParentId(0);
-        }
 
         return categoryDao.save(category);
     }
@@ -94,8 +91,15 @@ public class CategoryServiceImpl implements CategoryService {
 //        if (Integer.valueOf(r.get("code").toString()) != 0) {
 //            throw new RRException(r.get("msg").toString());
 //        }
-        if(category.getLevel().equalsIgnoreCase("L1")){
+        if (category.getLevel().equalsIgnoreCase(Dict.Level.item_L1.getItem())){
             category.setParentId(0);
+        } else {
+            List<Integer> parentId = new ArrayList<>();
+            parentId.add(category.getId());
+            List<CategoryEntity> list = categoryDao.queryListByParentId(parentId);
+            if (list != null && list.size() > 0) {
+                throw new RRException("该L1分类存在子分类,不允许变更分类级别!");
+            }
         }
 
         return categoryDao.update(category);
@@ -327,8 +331,6 @@ public class CategoryServiceImpl implements CategoryService {
             String level = categoryDto.getLevel();
             // 父节点
             String parentName = categoryDto.getParentName();
-            // 类型
-            Integer type = categoryDto.getType();
 
             // 校验
             if (!ValidateUtils.validateSpecialAllowChinese(name)) {

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/MerchServiceImpl.java

@@ -49,6 +49,10 @@ public class MerchServiceImpl
 
     @Override
     public int update(MerchEntity merch) {
+        if (merch.getSortOrder() == null) {
+            merch.setSortOrder(0);
+        }
+
         MerchEntity tempMerch = merchDao.findByMerchSn(merch.getMerchSn());
         if(tempMerch != null && tempMerch.getId() != merch.getId()){
             throw new RRException("商户编号已经存在");

+ 7 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -558,10 +558,14 @@ public class OrderServiceImpl implements OrderService {
                     goodsTax.toString(),
                     orderGoods.getNumber().toString(),
                     new BigDecimal(orderGoods.getNumber()).multiply(orderGoods.getRetailPrice()).setScale(2, RoundingMode.HALF_UP).toString(),
-                    orderGoods.getDiscountedPrice().toString());
+                    orderGoods.getDiscountedPrice().toString(),
+                    orderGoods.getRetailPrice().subtract(orderGoods.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP).toString()
+                    );
             goodsList.add(goods);
         }
 
+        // 订单积分详情
+        Mall2MemberConsumptionRecordsEntity memberConsumptionRecordsEntity = memberConsumptionRecordsDao.queryObjectByOrderSn(orderEntity.getOrderSn());
         // 收银信息
         CashInfo cashInfo = new CashInfo();
         cashInfo.setGoodsTotal(goodsTotal.toString());
@@ -572,6 +576,8 @@ public class OrderServiceImpl implements OrderService {
         cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
         cashInfo.setFreight(
                 new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
+        cashInfo.setDeductionScore(memberConsumptionRecordsEntity.getDeductionScore());
+        cashInfo.setScoreDeductionPrice(memberConsumptionRecordsEntity.getScoreDeductionPrice().toString());
         if ("alipay".equals(orderEntity.getPayFlag())) {
             cashInfo.setPaymentMode("支付宝支付");
         } else {

+ 8 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/SupplierServiceImpl.java

@@ -50,6 +50,8 @@ public class SupplierServiceImpl implements SupplierService {
     public int save(SupplierEntity supplier) {
         if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
             throw new RRException("一级商户编号不能为空");
+        } else if (StringUtils.isEmpty(supplier.getThirdPartyMerchCode())) {
+            throw new RRException("第三方商户不能为空");
         }else{
             MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
             if(merchEntity != null){
@@ -68,8 +70,14 @@ public class SupplierServiceImpl implements SupplierService {
 
     @Override
     public int update(SupplierEntity supplier) {
+        if (supplier.getSortOrder() == null) {
+            supplier.setSortOrder(0);
+        }
+
         if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
             throw new RRException("一级商户编号不能为空");
+        } else if (StringUtils.isEmpty(supplier.getThirdPartyMerchCode())) {
+            throw new RRException("第三方商户不能为空");
         }else{
             MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
             if(merchEntity != null){

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java

@@ -6,6 +6,7 @@ import com.kmall.admin.entity.mk.MkActivityFormEntity;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.mk.MkActivityFormService;
 import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.utils.RRException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -44,6 +45,11 @@ public class MkActivityFormServiceImpl implements MkActivityFormService {
     public int save(MkActivityFormEntity mkActivityForm) {
         SysUserEntity user = ShiroUtils.getUserEntity();
 
+        MkActivityFormEntity isExistEntity = mkActivityFormDao.queryObjectByMkCode(mkActivityForm.getMkCode());
+        if (isExistEntity != null) {
+            throw new RRException("活动代码已存在!");
+        }
+
         mkActivityForm.setCreaterSn(user.getUserId().toString());
         mkActivityForm.setCreateTime(new Date());
         return mkActivityFormDao.save(mkActivityForm);
@@ -51,6 +57,11 @@ public class MkActivityFormServiceImpl implements MkActivityFormService {
 
     @Override
     public int update(MkActivityFormEntity mkActivityForm) {
+        MkActivityFormEntity isExistEntity = mkActivityFormDao.queryObjectByMkCode(mkActivityForm.getMkCode());
+        if (isExistEntity != null && !isExistEntity.getMmId().equals(mkActivityForm.getMmId())) {
+            throw new RRException("活动代码已存在!");
+        }
+
         return mkActivityFormDao.update(mkActivityForm);
     }
 

+ 0 - 1
kmall-admin/src/main/resources/XmlTemplate/CategoryDtoList.xml

@@ -12,7 +12,6 @@
                 <mapping row="1" col="4">categoryDto.isShow</mapping>
                 <mapping row="1" col="5">categoryDto.level</mapping>
                 <mapping row="1" col="6">categoryDto.parentName</mapping>
-                <mapping row="1" col="7">categoryDto.type</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 9 - 2
kmall-admin/src/main/resources/mybatis/mapper/CashierDao.xml

@@ -62,6 +62,9 @@
 		<if test="machineCode != null and machineCode.trim() != ''">
 			AND cashier.machine_code LIKE concat('%',#{machineCode},'%')
 		</if>
+		<if test="storeName != null and storeName.trim() != ''">
+			AND store.store_name LIKE concat('%',#{storeName},'%')
+		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -76,10 +79,14 @@
 	</select>
 
  	<select id="queryTotal" resultType="int">
-		select count(*) from mall2_cashier
+		select count(*) from mall2_cashier cashier
+		left join mall_store store on cashier.shop_sn = store.id
 		WHERE 1=1
 		<if test="machineCode != null and machineCode.trim() != ''">
-			AND machine_code LIKE concat('%',#{machineCode},'%')
+			AND cashier.machine_code LIKE concat('%',#{machineCode},'%')
+		</if>
+		<if test="storeName != null and storeName.trim() != ''">
+			AND store.store_name LIKE concat('%',#{storeName},'%')
 		</if>
 	</select>
 

+ 6 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductDao.xml

@@ -61,6 +61,9 @@
         <if test="goodsName != null and goodsName.trim() != ''">
             AND mall_goods.name LIKE concat('%',#{goodsName},'%')
         </if>
+        <if test="goodsSn != null and goodsSn.trim() != ''">
+            AND mall_goods.goods_sn LIKE concat('%',#{goodsSn},'%')
+        </if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -87,6 +90,9 @@
         <if test="goodsSpecificationIds != null and goodsSpecificationIds != ''">
             AND mall_product.goods_specification_ids = #{goodsSpecificationIds}
         </if>
+        <if test="goodsSn != null and goodsSn.trim() != ''">
+            AND mall_goods.goods_sn LIKE concat('%',#{goodsSn},'%')
+        </if>
     </select>
 
     <insert id="save" parameterType="com.kmall.admin.entity.ProductEntity" useGeneratedKeys="true" keyProperty="id">

+ 1 - 1
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml

@@ -131,7 +131,7 @@
 			<if test="createTime != null">`create_time` = #{createTime}, </if>
 			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
 			<if test="updateTime != null">`update_time` = #{updateTime}, </if>
-			<if test="moderSn != null">`moder_sn` = #{moderSn}</if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn},</if>
 			<if test="priority != null">`priority` = #{priority}</if>
 		</set>
 		where mka_id = #{mkaId}

+ 11 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml

@@ -153,5 +153,16 @@
 		</if>
 	</select>
 
+	<select id="queryObjectByMkCode" resultType="com.kmall.admin.entity.mk.MkActivityFormEntity">
+		select
+			`mm_id`,
+			`mk_name`,
+			`mk_code`,
+			`create_time`,
+			`creater_sn`
+		from mk_activity_form
+		where mk_code = #{mkCode}
+	</select>
+
 
 </mapper>

+ 27 - 0
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml

@@ -110,6 +110,33 @@
 		</if>
 	</select>
 
+	<select id="queryObjectByOrderSn"
+			resultType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
+		select
+			`mmcr_id`,
+			`user_id`,
+			`order_sn`,
+			`consumption_time`,
+			`shop_sn`,
+			`is_use_birthday_offer`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,
+			`deduction_score`,
+			`member_code`,
+			`member_phone`,
+			`order_total_price`,
+			`score_deduction_price`,
+			`score_limit`,
+			`before_score`,
+			`after_score`,
+			`order_gift_score`
+		from mall2_member_consumption_records
+		where `order_sn` = #{orderSn}
+	</select>
+
 	<insert id="save" parameterType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity" useGeneratedKeys="true" keyProperty="id">
 		insert into mall2_member_consumption_records(
 			`mmcr_id`,

+ 3 - 0
kmall-admin/src/main/webapp/WEB-INF/page/cashier/cashierManager.html

@@ -12,6 +12,9 @@
                 <i-col span="4">
                     <i-input v-model="q.machineCode" @on-enter="query" placeholder="机器码"/>
                 </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.storeName" @on-enter="query" placeholder="门店名称"/>
+                </i-col>
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>
             </div>

+ 55 - 55
kmall-admin/src/main/webapp/WEB-INF/page/shop/category.html

@@ -98,12 +98,12 @@
                 </i-select>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <Input-number :min="0" :step="1" v-model="category.sortOrder" placeholder="排序" style="width: 188px;"/>
-            </Form-item>
-            <Form-item label="首页展示排序" prop="showIndex">
-                <Input-number :min="0" :step="1" v-model="category.showIndex" placeholder="首页展示排序"
-                              style="width: 188px;"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="category.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
+<!--            <Form-item label="首页展示排序" prop="showIndex">-->
+<!--                <Input-number :min="0" :step="1" v-model="category.showIndex" placeholder="首页展示排序"-->
+<!--                              style="width: 188px;"/>-->
+<!--            </Form-item>-->
             <Form-item label="显示" prop="isShow">
                 <Radio-group v-model="category.isShow">
                     <Radio label="1">
@@ -142,29 +142,29 @@
                     <!--<span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议320*105像素以内,大小2M以下</span>-->
                 <!--</i-col>-->
             <!--</Row>-->
-            <Row>
-                <i-col span="16">
-                    <Form-item label="首页icon" prop="iconUrl">
-                        <i-input v-model="category.iconUrl" placeholder="尺寸建议90*90像素以内,大小100K以下" readonly/>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"
-                                max-size="100"
-                                :on-success="handleSuccessIconUrl" :on-format-error="handleFormatError"
-                                :show-upload-list="false"
-                                :on-exceeded-size="handleMaxSize">
-                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>
-                        </Upload>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <i-button icon="eye" @click="eyeImageIconUrl">预览图片</i-button>
-                    </Form-item>
-                </i-col>
-            </Row>
+<!--            <Row>-->
+<!--                <i-col span="16">-->
+<!--                    <Form-item label="首页icon" prop="iconUrl">-->
+<!--                        <i-input v-model="category.iconUrl" placeholder="尺寸建议90*90像素以内,大小100K以下" readonly/>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"-->
+<!--                                max-size="100"-->
+<!--                                :on-success="handleSuccessIconUrl" :on-format-error="handleFormatError"-->
+<!--                                :show-upload-list="false"-->
+<!--                                :on-exceeded-size="handleMaxSize">-->
+<!--                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>-->
+<!--                        </Upload>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <i-button icon="eye" @click="eyeImageIconUrl">预览图片</i-button>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--            </Row>-->
             <!--<Row>
                 <i-col span="16" style="margin-top: -30px;">
                     <span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议90*90像素以内,大小100K以下</span>
@@ -198,31 +198,31 @@
                     <!--<span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议320*105像素以内,大小2M以下</span>-->
                 <!--</i-col>-->
             <!--</Row>-->
-            <Row>
-                <i-col span="16">
-                    <Form-item label="分类banner" prop="wapBannerUrl">
-                        <i-input v-model="category.wapBannerUrl" placeholder="一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下" readonly/>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"
-                                max-size="100"
-                                :on-success="handleSuccessWapBannerUrl" :on-format-error="handleFormatError"
-                                :show-upload-list="false"
-                                :on-exceeded-size="handleMaxSize"
+<!--            <Row>-->
+<!--                <i-col span="16">-->
+<!--                    <Form-item label="分类banner" prop="wapBannerUrl">-->
+<!--                        <i-input v-model="category.wapBannerUrl" placeholder="一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下" readonly/>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"-->
+<!--                                max-size="100"-->
+<!--                                :on-success="handleSuccessWapBannerUrl" :on-format-error="handleFormatError"-->
+<!--                                :show-upload-list="false"-->
+<!--                                :on-exceeded-size="handleMaxSize"-->
 
-                        >
-                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>
-                        </Upload>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <i-button icon="eye" @click="eyeImageWapBannerUrl">预览图片</i-button>
-                    </Form-item>
-                </i-col>
-            </Row>
+<!--                        >-->
+<!--                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>-->
+<!--                        </Upload>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <i-button icon="eye" @click="eyeImageWapBannerUrl">预览图片</i-button>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--            </Row>-->
             <!--<Row>
                 <i-col span="16" style="margin-top: -30px;">
                     <span style="margin-left: 100px;color: red;font-size: 12px;">* 一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下</span>
@@ -238,9 +238,9 @@
             <!--</Radio>-->
             <!--</Radio-group>-->
             <!--</Form-item>-->
-            <Form-item label="frontName" prop="frontName">
-                <i-input type="textarea" v-model="category.frontName" placeholder="frontName"/>
-            </Form-item>
+<!--            <Form-item label="frontName" prop="frontName">-->
+<!--                <i-input type="textarea" v-model="category.frontName" placeholder="frontName"/>-->
+<!--            </Form-item>-->
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
                 <i-button type="warning" @click="reload" style="margin-left: 8px"/>

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/shop/merch.html

@@ -47,7 +47,7 @@
                 <i-input v-model="merch.merchShortName" placeholder="商户简称"/>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <i-input v-model="merch.sortOrder" placeholder="排序"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="merch.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
             <Form-item label="显示" prop="isShow">
                 <Radio-group v-model="merch.isShow">

+ 3 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/product.html

@@ -12,6 +12,9 @@
                 <i-col span="4">
                     <i-input v-model="q.goodsName" @on-enter="query" placeholder="商品名称"/>
                 </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.goodsSn" @on-enter="query" placeholder="商品序列号"/>
+                </i-col>
                 <i-button @click="query">查询</i-button>
             </div>
             <div class="buttons-group">

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/shop/supplier.html

@@ -64,7 +64,7 @@
                 <i-input v-model="supplier.childSupplierFlag" placeholder="二级供货商标识"/>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <i-input v-model="supplier.sortOrder" placeholder="排序"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="supplier.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
             <Form-item label="是否禁用" prop="isShow">
                 <!--<i-input v-model="supplier.isShow" placeholder="是否禁用:0:否;1:是"/>-->

+ 7 - 4
kmall-admin/src/main/webapp/js/cashier/cashierManager.js

@@ -84,7 +84,8 @@ let vm = new Vue({
             // ]
 		},
 		q: {
-            machineCode: ''
+            machineCode: '',
+            storeName: ''
 		}
 	},
 	methods: {
@@ -112,7 +113,7 @@ let vm = new Vue({
 		},
 		saveOrUpdate: function (event) {
             let url = vm.cashier.mcId == null ? "../cashier/save" : "../cashier/update";
-            console.log(vm.cashier);
+
 			$.ajax({
 				type: "POST",
 			    url: url,
@@ -156,11 +157,13 @@ let vm = new Vue({
 		getInfo: function(mcId){
 			$.get("../cashier/info/"+mcId, function (r) {
                 vm.cashier = r.cashier;
+                vm.cashier.shopSn = r.cashier.shopSn * 1;
             });
 		},
         reloadSearch: function() {
             vm.q = {
-                machineCode: ''
+                machineCode: '',
+                storeName: ''
             }
             vm.reload();
 		},
@@ -171,7 +174,7 @@ let vm = new Vue({
                 page = $("#jqGrid").jqGrid('getGridParam', 'page');
             }
 			$("#jqGrid").jqGrid('setGridParam', {
-                postData: {'machineCode': vm.q.machineCode},
+                postData: {'machineCode': vm.q.machineCode, 'storeName': vm.q.storeName},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');

+ 1 - 1
kmall-admin/src/main/webapp/js/cashier/salerecord.js

@@ -16,7 +16,7 @@ $(function () {
 				}
 				return value;
 				}},
-			{label: '活动id', name: 'discountName', index: 'discountName', align: 'center', width: 120,},
+			// {label: '活动id', name: 'discountName', index: 'discountName', align: 'center', width: 120,},
 			{label: '销售时间', name: 'salesTime', index: 'sales_time',align: 'center', width: 160,formatter:function(value){
 					return transDate(value, 'yyyy-MM-dd hh:mm:ss');
 				}}

+ 4 - 2
kmall-admin/src/main/webapp/js/mk/mkactivityform.js

@@ -163,10 +163,12 @@ let vm = new Vue({
         mkActivityForm: {},
         ruleValidate: {
             mkCode: [
-                {required: true, message: '活动形式代码不能为空', trigger: 'blur'}
+                {required: true, message: '活动形式代码不能为空', trigger: 'blur'},
+                {max: 32, message: '活动形式代码长度不能超过32', trigger: 'blur'}
             ],
             mkName: [
-                {required: true, message: '活动形式名称不能为空', trigger: 'blur'}
+                {required: true, message: '活动形式名称不能为空', trigger: 'blur'},
+                {max: 32, message: '活动形式名称长度不能超过32', trigger: 'blur'}
             ]
         },
         q: {

+ 13 - 3
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1564,6 +1564,7 @@ function getPrintContentOrder(ticket, callback) {
     content += "<td style=\"width: 40%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
     content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
     content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">优惠</td>";
+    content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">优惠后单价</td>";
     // content += "<td style=\"width: 16%;text-align: right;font-size: 10px;font-weight: bold;\">税费</td>";
     content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
     content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
@@ -1583,6 +1584,7 @@ function getPrintContentOrder(ticket, callback) {
         content += "</td>";
         content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
         content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].discountPrice + "</td>";
+        content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].afterDiscountPrice + "</td>";
         // content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].taxation + "</td>";
         content += "<td style=\"width: 15%;text-align: center;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
         content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "</td>";
@@ -1597,10 +1599,18 @@ function getPrintContentOrder(ticket, callback) {
     content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
     content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.total + "元</span>";
     content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "<span style=\"float: left;width: 50%;text-align: left;\">税费合计:</span>";
+    // content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
+    // content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.taxTotal + "元</span>";
+    // content += "</div>";
     content += "<div style=\"width: 100%;\">";
-    content += "<span style=\"float: left;width: 50%;text-align: left;\">税费合计:</span>";
-    content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
-    content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.taxTotal + "元</span>";
+    content += "<span style=\"float: left;width: 50%;text-align: left;\">积分抵扣合计:</span>";
+    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.deductionScore + "分</span>";
+    content += "</div>";
+    content += "<div style=\"width: 100%;\">";
+    content += "<span style=\"float: left;width: 50%;text-align: left;\">积分抵扣金额:</span>";
+    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.scoreDeductionPrice + "元</span>";
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠合计:</span>";

+ 16 - 9
kmall-admin/src/main/webapp/js/shop/category.js

@@ -51,7 +51,7 @@ TreeGrid.initColumn = function () {
         // {title: '所属商户', field: 'merchName',  width: '100px', align: 'center'},
         // {title: '所属门店', field: 'storeName', width: '80px', align: 'center'},
         {title: '描述', field: 'frontDesc', align: 'center', valign: 'middle', width: '150px'},
-        {title: '首页排序', field: 'sortOrder', align: 'center', valign: 'middle', width: '50px'},
+        {title: '排序', field: 'sortOrder', align: 'center', valign: 'middle', width: '50px'},
         {
             title: '显示',
             field: 'isShow',
@@ -84,23 +84,28 @@ var vm = new Vue({
         category: {isShow: 1, type: 0, level: 'L1', bannerUrl: '', iconUrl: '', imgUrl: '', wapBannerUrl: ''},
         ruleValidate: {
             name: [
-                {required: true, message: '分类名称不能为空', trigger: 'blur'}
+                {required: true, message: '分类名称不能为空', trigger: 'blur'},
+                {max: 32, message: '分类名称长度不能超过32', trigger: 'blur'}
+            ],
+            keywords: [
+                {max: 20, message: '关键字长度不能超过20', trigger: 'blur'}
             ],
             frontDesc: [
-                {required: true, message: '描述不能为空', trigger: 'blur'}
+                {required: true, message: '描述不能为空', trigger: 'blur'},
+                {max: 128, message: '描述长度不能超过128', trigger: 'blur'}
             ],
             // bannerUrl: [
             //     {required: true, message: 'banner图片不能为空', trigger: 'blur'}
             // ],
-            iconUrl: [
-                {required: true, message: '首页icon不能为空', trigger: 'blur'}
-            ],
+            // iconUrl: [
+            //     {required: true, message: '首页icon不能为空', trigger: 'blur'}
+            // ],
             // imgUrl: [
             //     {required: true, message: '图片不能为空', trigger: 'blur'}
             // ],
-            wapBannerUrl: [
-                {required: true, message: '分类banner不能为空', trigger: 'blur'}
-            ]
+            // wapBannerUrl: [
+            //     {required: true, message: '分类banner不能为空', trigger: 'blur'}
+            // ]
             // frontName: [
             //     {required: true, message: 'frontName不能为空', trigger: 'blur'}
             // ]
@@ -326,6 +331,8 @@ var vm = new Vue({
             // TreeGrid.table.refresh();
             initialPage();
             getGrid();
+            // 清除验证信息
+            vm.handleReset('formValidate');
         },
         handleSubmit: function (name) {
             handleSubmitValidate(this, name, function () {

+ 0 - 9
kmall-admin/src/main/webapp/js/shop/merch.js

@@ -67,15 +67,6 @@ let vm = new Vue({
                 {required: true, message: '商户简称不能为空', trigger: 'blur'},
                 {max: 10, message: '商户简称长度不能超过10', trigger: 'blur'}
             ],
-            sortOrder: [
-                {
-                    type: 'integer', message: '排序只能输入正整数,最大不超过9999', trigger: 'blur', min: 0, max: 9999,
-                    transform(value) {
-                        return Number(value);
-                    }
-                },
-                {pattern: /^[1-9]\d*$/, message: '排序只能输入正整数', trigger: 'blur'}
-            ],
             remark: [
                 {max: 32, message: '备注长度不能超过32', trigger: 'blur'}
             ]

+ 7 - 6
kmall-admin/src/main/webapp/js/shop/product.js

@@ -14,10 +14,10 @@ $(function () {
                 label: '商品规格',
                 name: 'goodsSpecificationNameValue',
                 index: 'goods_specification_ids',
-                width: 160,
-                formatter: function (value, options, row) {
-                    return value.replace(row.goodsName + " ", '');
-                }
+                width: 160
+                // formatter: function (value, options, row) {
+                //     return value.replace(row.goodsName + " ", '');
+                // }
             },
             {label: '商品序列号', name: 'goodsSn', index: 'goods_sn', width: 180},
             // {label: '商品库存', name: 'goodsNumber', index: 'goods_number', width: 80},
@@ -65,7 +65,8 @@ let vm = new Vue({
             ]
         },
         q: {
-            goodsName: ''
+            goodsName: '',
+            goodsSn: ''
         },
         goodss: [],
         attribute: [],
@@ -157,7 +158,7 @@ let vm = new Vue({
             vm.showList = true;
             let page = $("#jqGrid").jqGrid('getGridParam', 'page');
             $("#jqGrid").jqGrid('setGridParam', {
-                postData: {'goodsName': vm.q.goodsName},
+                postData: {'goodsName': vm.q.goodsName, 'goodsSn': vm.q.goodsSn},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');

+ 4 - 2
kmall-admin/src/main/webapp/js/shop/supplier.js

@@ -52,10 +52,12 @@ let vm = new Vue({
 		supplier: {childSupplierName: '', childSupplierFlag: '', isShow: 0},
 		ruleValidate: {
             childSupplierName: [
-				{required: true, message: '二级供货商名称不能为空', trigger: 'blur'}
+				{required: true, message: '二级供货商名称不能为空', trigger: 'blur'},
+                {max: 32, message: '二级供货商名称长度不能超过32', trigger: 'blur'}
 			],
             childSupplierFlag: [
-                {required: true, message: '二级供货商标识不能为空', trigger: 'blur'}
+                {required: true, message: '二级供货商标识不能为空', trigger: 'blur'},
+                {max: 20, message: '二级供货商标识长度不能超过20', trigger: 'blur'}
             ]
 		},
 		q: {

+ 1 - 2
kmall-admin/src/main/webapp/login.html

@@ -24,7 +24,7 @@
     <!--<div class="row" style="background: rgba(109, 109, 109, 0.23);border: 0px solid #dddee1;padding:72px 2px">-->
     <div class="row" style="background: rgba(109, 109, 109, 0.45);border-radius: 20px;border: 0px solid #6d6d6d;padding:13px 22px 35px 22px;">
         <div class="row" style="border: 0px solid #6d6d6d">
-            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>跨 境 电 商 &nbsp;&nbsp;新零售</b></p>
+            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>珠 免 展 销 店</b></p>
             <hr/>
         </div>
         <!--<div class="col-md-7">
@@ -53,7 +53,6 @@
         </div>-->
         <div class="col-md-7" >
             <p style="font-size: 35px;font-family: 微软雅黑;color: #3bc8ff;text-shadow: 2px 2px 5px #000;padding-right: 10px;margin: 45px 0 0;" align="center">
-                <span >CW大药房</span>
                 <br/>
                 <span style="font-size: 45px">管 理 后 台</span>
                 <br/>

二进制
kmall-admin/src/main/webapp/statics/file/category_yyyy_mm_dd_v1.0.0.xls


+ 5 - 6
kmall-admin/src/main/webapp/userLogin.html

@@ -25,12 +25,11 @@
 <div class="loginscreen animated fadeInDown signinpanel" id="loginBox" v-cloak>
     <div class="row" style="background: rgba(109, 109, 109, 0.45);border-radius: 20px;border: 0px solid #6d6d6d;padding:13px 22px 35px 22px;">
         <div class="row" style="border: 0px solid #6d6d6d">
-            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>跨 境 电 商 &nbsp;&nbsp;新零售</b></p>
+            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>珠 免 线 下 店</b></p>
             <hr/>
         </div>
         <div class="col-md-7" >
             <p style="font-size: 35px;font-family: 微软雅黑;color: #3bc8ff;text-shadow: 2px 2px 5px #000;padding-right: 10px;margin: 45px 0 0;" align="center">
-                <span >CW大药房</span>
                 <br/>
                 <span style="font-size: 45px">收 银 系 统</span>
                 <br/>
@@ -133,10 +132,10 @@
                 // var data = "username=" + vm.username + "&password=" + vm.password + "&captcha=" + vm.captcha + "&machineCode=0z4kBPFEve0=&loginType=2"; //TODO  新增加一个机器码;
                 sessionStorage.removeItem("permsSet");
                 var code = sessionStorage.getItem("machineCode");
-                if(!code){
-                    alert("正在获取机器码,请稍后登录,大约5s");
-                    return;
-                }
+                // if(!code){
+                //     alert("正在获取机器码,请稍后登录,大约5s");
+                //     return;
+                // }
                 $.ajax({
                     type: "POST",
                     url: "sys/login",

+ 26 - 0
kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/CashInfo.java

@@ -36,6 +36,16 @@ public class CashInfo implements Serializable {
     // 支付方式名称
     private String paymentMode;
 
+    /**
+     * 积分抵扣合计
+     */
+    private Integer deductionScore;
+
+    /**
+     * 积分抵扣金额
+     */
+    private String scoreDeductionPrice;
+
 
     public String getTotal() {
         return total;
@@ -116,4 +126,20 @@ public class CashInfo implements Serializable {
     public void setPaymentMode(String paymentMode) {
         this.paymentMode = paymentMode;
     }
+
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
+    public String getScoreDeductionPrice() {
+        return scoreDeductionPrice;
+    }
+
+    public void setScoreDeductionPrice(String scoreDeductionPrice) {
+        this.scoreDeductionPrice = scoreDeductionPrice;
+    }
 }

+ 21 - 0
kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/Goods.java

@@ -25,6 +25,8 @@ public class Goods implements Serializable {
     private String subtotal;
     // 优惠金额
     private String discountPrice;
+    // 优惠后金额
+    private String afterDiscountPrice;
 
 
     public Goods(String gname, String uprice, String taxation, String num, String subtotal) {
@@ -44,6 +46,16 @@ public class Goods implements Serializable {
         this.discountPrice = discountPrice;
     }
 
+    public Goods(String gname, String uprice, String taxation, String num, String subtotal,String discountPrice, String afterDiscountPrice) {
+        this.gname = gname;
+        this.uprice = uprice;
+        this.taxation = taxation;
+        this.num = num;
+        this.subtotal = subtotal;
+        this.discountPrice = discountPrice;
+        this.afterDiscountPrice = afterDiscountPrice;
+    }
+
 
     public String getGname() {
         return gname;
@@ -93,6 +105,14 @@ public class Goods implements Serializable {
         this.discountPrice = discountPrice;
     }
 
+    public String getAfterDiscountPrice() {
+        return afterDiscountPrice;
+    }
+
+    public void setAfterDiscountPrice(String afterDiscountPrice) {
+        this.afterDiscountPrice = afterDiscountPrice;
+    }
+
     @Override
     public String toString() {
         return "Goods{" +
@@ -101,6 +121,7 @@ public class Goods implements Serializable {
                 ", taxation='" + taxation + '\'' +
                 ", num='" + num + '\'' +
                 ", subtotal='" + subtotal + '\'' +
+                ", afterDiscountPrice='" + afterDiscountPrice + '\'' +
                 '}';
     }
 }